我试过了 :
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' "
Run Code Online (Sandbox Code Playgroud)
如果我使用str = oss.str();
而不是打印字符串的值,它打印出"....0xbfad75c40xbfad75c40xbf...."喜欢的内存地址.
谁能告诉我为什么?谢谢.
Sim*_*one 16
string str = oss.str(); // this should do the trick
Run Code Online (Sandbox Code Playgroud)
如果您尝试将整个文件复制到字符串流,则:
oss << ifs;
Run Code Online (Sandbox Code Playgroud)
是错的。所做的只是打印 ifs 的地址。你想要做的是:
oss << ifs.rdbuf();
Run Code Online (Sandbox Code Playgroud)
然后当然,把它复制到一个字符串,就像其他人说的:
str = oss.str();
Run Code Online (Sandbox Code Playgroud)
如果您只想获得一行,则跳过字符串流,只需使用 getline:
std::getline(ifs,str);
Run Code Online (Sandbox Code Playgroud)