簡體   English   中英

將std :: ostream轉換為std :: string

[英]Convert std::ostream to std::string

我維護的舊代碼將文本收集到std::ostream 我想將它轉換為std::string

我找到了將std::sstringstreamstd::ostringstream等轉換為std::string但未明確將std::ostreamstd::string示例。

我怎樣才能做到這一點? (僅限古代C ++ 98,請不要提升)

  • 如果你有一個stringstream或一個ostreamstring ,object或reference,只需使用完全符合你要求的ostringstream::str()方法:提取一個string 但你知道,你顯然有一個ostream對象,而不是stringstream也不是ostreamstring

  • 如果您的ostream引用實際上是一個ostringstreamstringstream ,請使用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

  • 最后,如MM評論,如果您ostreamofstreamiostream ,最有可能清除其緩沖區,所以你可能無法如上述提議提取全部內容。

嘗試這個

 std::ostringstream stream;
 stream << "Some Text";
 std::string str =  stream.str();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM