说我们有这个代码:
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不会跳过空格,并且在我的程序中后来导致它们合并的问题。感谢所有的评论和帮助。
答案 0 :(得分:0)
我可以想出以下解决问题的方法。
在内部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
}
在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
}