gpt4 book ai didi

c++ - 如何使用 std::ends 覆盖 std::ostringstream 中的字符串?

转载 作者:行者123 更新时间:2023-11-30 00:50:34 24 4
gpt4 key购买 nike

我想覆盖 std::ostringstream 中的字符串,但 std::ends 不工作。这是 VS2012 的问题,还是我做错了什么?这是示例代码:

std::ostringstream foo;

foo << "1,2,3,4,5,6";
std::cout << foo.str(); // prints: 1,2,3,4,5,6
foo.clear();
foo.seekp( std::ios_base::beg );
foo << "A,B,C" << std::ends;
std::cout << foo.str(); // prints: A,B,C,4,5,6 NOT just: A,B,C

编辑:

我得到了很多答案,我可以使用 foo.str( std::string() ) 来清除字符串……我知道。这个问题是从这里衍生出来的:How to reuse an ostringstream?我正在尝试重新分配缓冲区。

最佳答案

实际上它打印

enter image description here

注意 [NUL] 对应于 std::ends 并且覆盖了 3

之后的逗号

ostringstream::str() 函数返回一个容器,该容器跟踪其长度并忽略任何可能的行结束字符。

所以要获得尊重字符串结束字符的格式,例如使用通过 std::string::c_str() 获得的 char *(或 wchar_t* 如果编译支持 unicode)表示 foo.str().c_str();

关于c++ - 如何使用 std::ends 覆盖 std::ostringstream 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com