2017-04-11 83 views
1

如何获取多行的标准输入并将其存储到std::streamstring中,直到用户按下Ctrl-D来表示输入结束?我想要做一些像this但是对于可变的输入行。如何检查传输信号的结束,如Ctrl-D由用户按下?如何将标准输入读入std :: stringstream直到Ctrl-D(传输结束)?

string std_input; 
    stringstream stream(std_input); 
    while (getline(cin, std_input)) 
     stream(std_input);  
+1

[如何超载创建一个Minimal,Complete和Verifiable示例](https://stackoverflow.com/help/mcve)“描述问题”不起作用“不是问题陈述,告诉我们期望的行为应该是。告诉我们错误信息的确切用词是什么,以及哪一行代码正在生成它。在你的问题的标题中加入一个简短的问题摘要。“ –

+0

哪一部分我可以更清楚一点。程序编译并且不会抛出任何错误。我想从stdin获取可变的用户输入并将其存储到stream。我链接到一个类似问题的例子,但我想扩展它为可变的输入行 – Char

+1

你说你想从标准输入中读取几行并将它存储在一个字符串流中,然后得到代码你自己的问题。什么是问题?你需要什么信息? –

回答

4
在我看来

最简单方法是的std::cin垫层缓冲区传递到字符串流,因为它有std::basic_streambuf

std::ostringstream sstream; 
sstream << std::cin.rdbuf(); 
3

这是为我工作:

string std_input; 
stringstream stream; 
while (getline(cin, std_input)) { 
    stream << std_intput << endl; 
} 
+1

推荐用''\ n'来代替'endl'关闭一般的主体。它不会与字符串流有很大关系,但是这个代码应该是移植到'endl'内建的flush文件将严重损害性能。 – user4581301

相关问题