我写了以下代码。问题应该是istringstream函数。我做错了什么?提前谢谢。
//read a string from input with a istringstream function and output the string
word by word;
//1.the function takes and returns an istringstream&
//2.the function reads the stream until it hits eof
//the function should print the contents of an istringstream object
#include <iostream>
#include <string>
#include <sstream>
istringstream& read(istringstream& input)
{
string string, word;
while(getline(input,string), !input.eof())
{
if (input)
{
istringstream instring(string);
instring>>word;
cout<<word<<'_'<<ends;
}
if (input.bad())
throw runtime_error("data is corrupted");
if (input.fail())
cerr<<"data failed, try again"<<ends;
input.close();
input.clear();
}
return istringstream&;
}
int main ()
{
cout<<"enter a string"<<endl;
read(cin);
}
此输出错误为:(第9行)
error: expected constructor, destructor, or type conversion before ‘&’ token
答案 0 :(得分:4)
变化:
return istringstream&;
为:
return input;
但是,如果您不使用返回的值,则可以将read()
的返回类型更改为void
,并且不返回任何内容。
答案 1 :(得分:1)
所有这些都在std::
命名空间中定义。
如果你很懒,你可以using namespace std;
,但这不是一个好习惯。