如何将ostringstream中的值复制到字符串?

时间:2011-02-23 14:24:58

标签: c++

我试过了:

ostringstream oss;
read a string from file and put to oss;
string str;
str << oss.str();// error here "error: no match for ‘operator>>’ in 'oss >> str' "

如果我使用str = oss.str(); 它打印出"....0xbfad75c40xbfad75c40xbf...."喜欢的内存地址,而不是打印字符串的值 谁能告诉我为什么? 谢谢。

4 个答案:

答案 0 :(得分:16)

string str = oss.str(); // this should do the trick

答案 1 :(得分:3)

如果您尝试将整个文件复制到字符串流,那么:

oss << ifs;

错了。所有这一切都打印出ifs的地址。你想要做的是:

oss << ifs.rdbuf();

当然,将其复制到一个字符串,就像其他人一样:

str = oss.str();

如果你只想获得一行,那么跳过stringstream,然后使用getline:

std::getline(ifs,str);

答案 2 :(得分:1)

<<是在流上定义的运算符,string不是。您只想在此处使用=

答案 3 :(得分:1)

这没有任何意义。 oss.str()会返回std::string。您无法将string流式传输到string。您需要str = oss.str(),或使用标准stringstream代替ss >> str