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

Xit*_*rum 4 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' "
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)

  • @ user552279:那是你的问题.这不是从文件中读取的正确方法.另外,为什么要尝试从文件读入流?您可以直接从文件中读取数据(它也是一个流!). (2认同)

Ben*_*ley 5

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

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)