如何分隔字符串并将标记传递给方法

How to separate strings and pass tokens to methods

本文关键字:方法 串并 字符串 何分隔 分隔 字符      更新时间:2023-10-16

对于一个类,我需要获取一个文本文件,并为所有单词及其出现的行创建一个二叉树。我让二叉树适用于基本的预制字符串,但我在分隔单词和告诉我在哪个行号时遇到了麻烦。

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;