std::strstream:: str
| 
           
            
             char
            
            
             *
            
            str
            
             (
            
            
             )
            
            
             ;
            
           
           | (C++98 中已弃用) (C++26 中移除) | |
返回指向缓冲区起始位置的指针,并在返回前冻结该缓冲区。此操作实际上等效于调用 rdbuf ( ) - > str ( ) 。
| 目录 | 
参数
(无)
返回值
指向关联的 std:: strstreambuf 中缓冲区起始位置的指针,若无可用缓冲区则为空指针。
注释
       在调用将结果用作C字符串的
       
        str()
       
       之前,流缓冲区必须以空字符终止。常规输出(例如
       
        
         stream
         
          <<
         
         
          1.2
         
        
       
       )不会存储空终止符,必须显式追加,通常使用操纵器
       
        
         std::ends
        
       
       。
      
       在调用
       
        str()
       
       后,动态流会进入冻结状态。在此
       
        
         strstream
        
       
       对象所在作用域结束前,必须调用
       
        
         freeze(false)
        
       
       ,否则析构函数将导致内存泄漏。此外,对已冻结流的后续输出在到达已分配缓冲区末尾时可能被截断,这可能使缓冲区无法以空字符终止。
      
示例
#include <iostream> #include <strstream> int main() { std::strstream dyn; // 动态分配的输出缓冲区 dyn << "Test: " << 1.23; // 未添加 std::ends 以演示追加行为 std::cout << "输出流包含 \"; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // 由于调用 str(),流现在处于冻结状态 dyn << " 更多文本" << std::ends; std::cout << "输出流包含 \"; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); }
可能的输出:
输出流包含 "Test: 1.23" 输出流包含 "Test: 1.23 更多 "
参见
| 标记缓冲区为冻结状态并返回输入序列的起始指针 ( 
           std::strstreambuf
          的公开成员函数) |