我试过了:
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...."
喜欢的内存地址,而不是打印字符串的值
谁能告诉我为什么?
谢谢。
答案 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
。