在线文档教程
C++
输入/输出 | Input/output

std::strstreambuf::str

std::strStrebuf::str

char* str() const;

打电话freeze(),然后返回GET区域的开始指针的副本,std::streambuf::eback()...

GET区域的开始,用于所有可写的std::strstreambuf提供的接口构造的对象。std::strstream,也是投放区的开始。

参数

%280%29

返回值

一份eback(),它可能是空指针。

注记

此函数通常通过std::strstream接口。

打电话给freeze()确保返回的指针在下一次显式调用之前仍然有效。freeze(false)否则,在动态缓冲区%29上的%28,任何输出操作都会触发缓冲区重新分配,这将使指针失效。的析构函数中的内存泄漏。std::strstreambuf,除非freeze(false)在缓冲区%28之前调用,更常见的是,在std::strstream管理它的%29被销毁。

二次

#include <strstream> #include <iostream> int main() { std::strstream dyn; // dynamically-allocated read/write buffer dyn << "Test: " << 1.23 << std::ends; std::strstreambuf* buf = dyn.rdbuf( std::cout << "R/W buffer holds \"" << buf->str() // or dyn.str() << "\"\n"; dyn.freeze(false // after calling .str() on a dynamic strstream char arr[10]; std::ostrstream user(arr, 10 // fixed-size write-only buffer buf = user.rdbuf( user << 1.23 << std::ends; std::cout << "Write-only buffer holds \"" << buf->str() // or user.str() << "\"\n"; std::istrstream lit("1 2 3" // fixed-size read-only buffer buf = lit.rdbuf( std::cout << "Read-only buffer holds \"" << buf->str() // or lit.str() << "\"\n"; }

二次

产出:

二次

R/W buffer holds "Test: 1.23" Write-only buffer holds "1.23" Read-only buffer holds "1 2 31 2 3"

二次

另见

straccesses the output buffer (public member function of std::strstream)
straccesses the output buffer (public member function of std::ostrstream)
straccesses the output buffer (public member function of std::istrstream)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/io/strStrebuf/str