Fla*_*hão 8 c++ stl stringstream stringbuffer
我试图修改stringstream对象的stringbuffer而不必复制字符串,使用方法pubsetbuf,但它无法正常工作.我正在关注http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/中的文档.这是我的示例代码:
#include <iostream>
#include <sstream>
int main(int argc, char* argv[])
{
std::stringstream stream("You say goodbye");
char replace[] = {"And I say hello"};
std::cout << stream.str() << std::endl; // Checking original contents
stream.rdbuf()->pubsetbuf(replace, 16); // Should set contents here
std::cout << stream.str() << std::endl; // But don't :(
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
You say goodbye
You say goodbye
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用stream.str(替换),但是这个方法复制'replace'的值,我不想复制.
我错过了什么?
更新:我正在使用VS2010
For*_*veR 11
不应该设置内容.pubsetbuf电话virtual setbuf
basic_streambuf<charT,traits>* setbuf(charT* s, streamsize n);
Run Code Online (Sandbox Code Playgroud)
15效果:实现定义,但setbuf(0,0)无效.
16返回:这个.
2010年VS不存在虚方法的重载setbuf中basic_stringbuf,它使用从默认basic_streambuf
virtual _Myt *__CLR_OR_THIS_CALL setbuf(_Elem *, streamsize)
{ // offer buffer to external agent (do nothing)
return (this);
}
Run Code Online (Sandbox Code Playgroud)