【发布时间】:2017-09-29 15:43:57
【问题描述】:
我通过引用将我从 cin 组装的字符串流传递给类函数。当我在类函数中调用streamstream.str() 时,所有输入都在那里。然而,在下一行,当我调用getline(stringstream,output) 时,它失败了并且永远不会启动循环。我的字符串流有什么问题?
#include <iostream>
#include <sstream>
using namespace std;
class HRMLMap{
public:
HRMLMap(stringstream& iss){
string line;
cout << iss.str() << endl;
while(getline(iss,line)){
cout << "it never gets here." << "\n";
}
}
};
int main() {
std::string line;
stringstream ss("", ios_base::app | ios_base::out);
for(int i = 0; i < 4; ++i){
getline(cin,line);
ss << line << endl;
}
HRMLMap myHRMLMap(ss);
return 0;
}
【问题讨论】:
-
你怎么知道它没有启动循环?您的“失败”指示是什么?
-
请显示演示问题的代码。另见minimal reproducible example。好像你简化了太多,所以严格来说它没有显示你描述的行为
-
将 ss 声明为
stringstream ss;你还没有选择in- 默认应该足够好 -
NathanOliver,该代码不起作用。我测试了它。我认为您将 iss.str() 的输出与 getline() 的输出混为一谈。它永远不会到达 while 循环内部。
-
@Ben 哎呀。我忘了你加了换行符。
标签: c++ cin stringstream