我是 C++ 的新手,正在尝试逐一读取字符串中的每个字符。这是我正在做的:
string sum = "1 + 3 x 2\n";
char delimiter = ' ';
string token = "";
vector<string> tokens;
for(char c: sum)
{
if(c == delimiter)
{
tokens.push_back(token);
token = "";
}
else
{
token += c;
}
}
所以我基本上是在标记我的字符串。在我看来,我应该以:
tokens[0] = "1";
tokens[1] = "+";
tokens[2] = "3";
tokens[3] = "x";
tokens[4] = "2";
但是,当我运行它时,我没有得到最后的“2”。我认为这是因为换行(这是必要的,不值得解释)。
为什么会这样?
最佳答案
您应该将分隔符形式从 char 更改为字符串,然后检查 c 是否在该字符串中。
string sum = "1 + 3 x 2\n";
string delimiters = " \n";
string token = "";
vector<string> tokens;
for(char c: sum)
{
if(delimiters.find(c) != string::npos)
{
tokens.push_back(token);
token = "";
}
else
{
token += c;
}
}
这也应该考虑到末尾的换行符。
关于c++ - 遍历缺少最后一个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578244/