[英]Convert std::ostream to std::string
我維護的舊代碼將文本收集到std::ostream
。 我想將它轉換為std::string
。
我找到了將std::sstringstream
, std::ostringstream
等轉換為std::string
但未明確將std::ostream
為std::string
示例。
我怎樣才能做到這一點? (僅限古代C ++ 98,請不要提升)
如果你有一個stringstream
或一個ostreamstring
,object或reference,只需使用完全符合你要求的ostringstream::str()
方法:提取一個string
。 但你知道,你顯然有一個ostream
對象,而不是stringstream
也不是ostreamstring
。
如果您的ostream引用實際上是一個ostringstream
或stringstream
,請使用ostream::rdbuf
獲取streambuf
,然后使用此帖子查看如何提取string
。
例:
#include <iostream>
#include <sstream>
std::string toString( std::ostream& str )
{
std::ostringstream ss;
ss << str.rdbuf();
return ss.str();
}
int main() {
std::stringstream str;
str << "Hello";
std::string converted = toString( str );
std::cout << converted;
return 0;
}
現場演示: http : //cpp.sh/6z6c
ostream
是ofstream
或iostream
,最有可能清除其緩沖區,所以你可能無法如上述提議提取全部內容。 嘗試這個
std::ostringstream stream;
stream << "Some Text";
std::string str = stream.str();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.