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"
二次
另见
str | accesses the output buffer (public member function of std::strstream) |
---|---|
str | accesses the output buffer (public member function of std::ostrstream) |
str | accesses the output buffer (public member function of std::istrstream) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。