我不明白为什么我必须在while循环中再次使用cin.get()
。在while循环之前使用cin.get()
执行cin.get()
同样在while循环中执行的操作。它在读取空格时读取我输入的一串文本。但显然在这个程序中我试图将所有文本推送到一个向量中。如果我要从while循环中排除cin.get(next)
并且只有line.push_back(next)
,那么程序会收到错误并崩溃。
请解释为什么会这样做。谢谢
//Demonstration of the generic find function
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<char> line;
cout << "Enter a line of text: \n";
char next;
cin.get(next);
while(next != '\n')
{
line.push_back(next);
cin.get(next);
}
return 0;
}
答案 0 :(得分:0)
这是一个帮助你的小指南。有时在开始的时候很难看到树林。
定义名为char
类型的下一个变量char next;
由于下一个目前没有任何有意义的价值,让我们来一个。我们需要它来处理while语句中的条件。
cin.get(next);
让我们循环到下一个等于'\ n'
while(next != '\n')
{
我们仍然没有对next
做任何有意义的事情,我们唯一知道的是它不等于'\ n'所以我们真的应该用它做点什么。
我们将它推向我们的载体。
line.push_back(next);
大。到目前为止已完成。我们现在需要为next提供新值,原因有几个。一方面如果我们不改变接下来我们将永远循环(或者至少太长),因为循环的条件不会获得新的东西来咀嚼,另一方面我们想要一个新的值为我们的向量不,我们?
所以是的,让我们下一个
cin.get(next);
回到我们测试循环的开头
}
是的。