c ++单独获取包含空格的字符

时间:2015-07-29 21:55:08

标签: c++ char spaces

说我们有这个代码:

char nextChar;
std::string nextTerm;
bool inProgram = true;
while (inProgram)
{   
    std::cin.get(nextChar);              
    while (nextChar != ' ')
    {             
        nextTerm.push_back(nextChar);             
        std::cin.get(nextChar); 
    }
    //Parse each term until program ends
}

基本上我的目标是单独获取每个字符并添加到字符串(nextTerm),直到它遇到一个空格,然后停止解析该术语。这似乎只是跳过空格并在输入两个单词时直接从下一个单词中获取字符。这似乎很简单,但我无法弄明白。感谢帮助。

编辑: 最终get不会跳过空格,并且在我的程序中后来导致它们合并的问题。感谢所有的评论和帮助。

1 个答案:

答案 0 :(得分:0)

我可以想出以下解决问题的方法。

  1. 在内部nextTerm循环之前清除while

    char nextChar;
    std::string nextTerm;
    bool inProgram = true;
    while (inProgram)
    {
       // Clear the term before adding new characters to it.
       nextTerm.clear();
    
       std::cin.get(nextChar);              
       while (nextChar != ' ')
       {             
          nextTerm.push_back(nextChar);             
          std::cin.get(nextChar); 
       }
       //Parse each term until program ends
    }
    
  2. nextTerm循环内移动while的定义。

    char nextChar;
    bool inProgram = true;
    while (inProgram)
    {   
       // A new variable in every iteration of the loop.
       std::string nextTerm;
    
       std::cin.get(nextChar);              
       while (nextChar != ' ')
       {             
          nextTerm.push_back(nextChar);             
          std::cin.get(nextChar); 
       }
       //Parse each term until program ends
    }