c ++单独获取字符,包括空格
c++ Get chars individually including 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),直到遇到 space,然后停止解析该术语。这似乎只是跳过 spaces 并在输入两个单词时直接从后面的单词中获取字符。这看起来很简单,但我无法弄清楚。感谢帮助。
编辑:
结果是 get 没有跳过 spaces,这是我程序后面的一个问题导致它们合并。感谢大家的评论和帮助。
我可以想到以下方法来解决问题。
在内部 while
循环之前清除 nextTerm
。
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
}
假设我们有这段代码:
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),直到遇到 space,然后停止解析该术语。这似乎只是跳过 spaces 并在输入两个单词时直接从后面的单词中获取字符。这看起来很简单,但我无法弄清楚。感谢帮助。
编辑: 结果是 get 没有跳过 spaces,这是我程序后面的一个问题导致它们合并。感谢大家的评论和帮助。
我可以想到以下方法来解决问题。
在内部
while
循环之前清除nextTerm
。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 }