好的,我正在编写一个简单的C ++函数来组合cin'd字符串。我目前正在开发Linux,所以我没有简单的“getline(cin,input)”命令。这是迄今为止的代码:
string getLine()
{
string dummy;
string retvalue;
do
{
cin << dummy;
retvalue += dummy;
} while
return retvalue;
}
我想知道的是:提示实际上是要求用户输入,还是因为空格而仍然从缓冲区中读取?
答案 0 :(得分:8)
getline
定义了strings
:
std::string line;
std::getline(std::cin, line);
答案 1 :(得分:6)
我目前正在使用Linux,所以我没有简单的“getline(cin,input)”命令。
Linux与它有什么关系? getline
是标准的C ++,除了拼写为cin.getline(input, size[, delimiter])
。
编辑:不删除此项,因为它是一个有用的参考,但AraK的帖子说明std::getline
应该是想要std::string
的人的首选。 istream
的{{1}}代替getline
。
答案 2 :(得分:0)
是。提示IS实际上是在询问用户输入,但它期待的是一个单词而不是一行。这可能就是为什么它对你来说太敏感了。
你想要的是什么,假设你想读多行,就是这个。
#include <iostream>
...
std::string sLine;
while(getline(std::cin, sLine)) {
// process sLine;
}
该代码还有其他一些问题。
问题中的循环更靠近单词阅读器。 这样做可以实现这一目标。
#include <string>
#include <iostream>
#include <list>
...
void getStandardInput(std::list<std::string> & stringList) {
std::string word;
while (true) {
cin >> word;
if (cin.eof())
return;
stringList.push_back(word);
}
}
答案 3 :(得分:0)
getline()
位于<string>
标题
我总是忘记这一点。