在while循环中使用cin.get()的目的是什么?

时间:2017-08-31 19:33:07

标签: c++

我不明白为什么我必须在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;
}   

1 个答案:

答案 0 :(得分:0)

这是一个帮助你的小指南。有时在开始的时候很难看到树林。

定义名为char

类型的下一个变量
char next;

由于下一个目前没有任何有意义的价值,让我们来一个。我们需要它来处理while语句中的条件。

cin.get(next);

让我们循环到下一个等于'\ n'

while(next != '\n')
{

我们仍然没有对next做任何有意义的事情,我们唯一知道的是它不等于'\ n'所以我们真的应该用它做点什么。

我们将它推向我们的载体。

    line.push_back(next);

大。到目前为止已完成。我们现在需要为next提供新值,原因有几个。一方面如果我们不改变接下来我们将永远循环(或者至少太长),因为循环的条件不会获得新的东西来咀嚼,另一方面我们想要一个新的值为我们的向量不,我们?

所以是的,让我们下一个

    cin.get(next);

回到我们测试循环的开头

}
是的。