如何分隔字符串并将标记传递给方法
How to separate strings and pass tokens to methods
对于一个类,我需要获取一个文本文件,并为所有单词及其出现的行创建一个二叉树。我让二叉树适用于基本的预制字符串,但我在分隔单词和告诉我在哪个行号时遇到了麻烦。
getline(MyFile, c);
for (int i = 0; i < c.size(); i++)
{
if ((b.size() == 0) && ((c[i] == ',') || (c[i] == ' ') || (c[i] == '.') || (c[i] == ';') || (c[i] == ' ')));
else
if ((b.size() > 0) && ((c[i] == ',') || (c[i] == ' ') || (c[i] == '.') || (c[i] == ';') || (c[i] == ' ')))
{
K1.AddWordOrIncriment(b, LineCounter);
b.clear();
}
else
b.push_back(c[i]);
}
LineCounter++;
这就是我尝试这样做的方式,我已经看到了其他关于如何做到这一点的帖子,但老实说,它们现在似乎超出了我的理解范围,我宁愿不只是复制我不明白的东西。
使用 std::strtok 将具有多个分隔符的行拆分为多个字符串
string line;
getline(cin, line);
// Convert string to char* so that std::strtok could be used later
char *cstr = new char[line.length() + 1];
std::strcpy(cstr, line.c_str());
vector<string> words;
// split line into multiple strings using multiple delimiters
char* ptr = std::strtok(cstr, " -.,;");
while (ptr)
{
string str(ptr);
words.push_back(str);
ptr = strtok(NULL, " -.,;");
}
delete[] cstr;
相关文章:
- 使用用户定义的参数调用future/async并调用类方法
- 接收字符串并使用它来调用方法C++
- 初始化指向类实例的智能指针并访问其方法
- 如何分隔字符串并将标记传递给方法
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 如何获取列表的每个对象并调用getName方法来打印其名称
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- 如何在 c++ 的 toString 方法中使用 setw(x) 并将其放入变量或建议中?
- 如何在Visual Studio 2017上将类方法设置为参数并将它们与lambda一起使用?
- C++11 重载方法,并转发到唯一方法
- 在WINDBG中调用C 方法实例并打印结果
- 我可以用一些巧妙的方法将并集初始化为函数参数吗
- 在 c++ 类中编写许多 void 方法,并跟踪变量更改
- C++/C++11使用初始化器列表初始化对象的静态数组/向量的有效方法,并支持基于范围的
- 在超类中调用抽象方法,并在C++中的子类中实现它
- 如何将类传递给方法,并从基类检测继承者
- 在源文件中定义静态方法,并在C++的头文件中声明