【发布时间】:2017-09-01 04:38:55
【问题描述】:
我不明白为什么我必须在 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;
}
【问题讨论】:
-
从阅读
std::basic_istream::get开始。如果您不了解程序调用的功能,您将无法理解程序的功能。相关,您的代码有错误。如果流偶然发生错误状态,它将循环到无穷远寻找永远不会出现的换行符。 -
它得到是输入。不知道混乱来自哪里。也许你应该通过调试器运行代码,这样你就可以看到它实际上在做什么。
-
你在一个循环中使用它来让它运行很多次。如果您从循环中删除该行,那么所有循环都会一遍又一遍地将相同的字母推送到向量。请注意,while 循环的结束条件永远不会出现,如果曾经进入。
标签: c++