我是C ++的新手,正在尝试从字符串中逐个读取每个char。这是我在做什么:

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/

10-16 04:29