gpt4 book ai didi

c++ - 如何在stringstream的位置写

转载 作者:行者123 更新时间:2023-11-28 02:15:16 24 4
gpt4 key购买 nike

我需要在特定位置将 char* 缓冲区写入 std::stringstream,通过 API 读取我设法将以下代码放在一起:

std::stringstream ss;
char * str = "123";
ss.seekp(0);
ss.write(str, 3);
ss.seekp(1);
ss.write(str, 3);
std::cout << ss.str(); //expecting 1123

但是没有按预期工作 - 或者更准确地说根本没有工作(没有被写入流),原因似乎是 .seekp().


我刚刚设法证实了我的猜测:.seekp() 是罪魁祸首,在删除 ss.seekp(0) 之后:

std::stringstream ss;
char * str = "123";
// remove this line: ss.seekp(0);
ss.write(str, 3);
ss.seekp(1);
ss.write(str, 3);
std::cout << ss.str(); //expecting 1123

它按预期打印 1123。奇怪的是,在 流上调用ss.seekp(0) 会使其无法使用。有人可以向我解释为什么会这样吗(c++ 文档中的来源)?

最佳答案

问题是seekp参数:

ss.seekp(0)

告诉流相对于开始(即绝对)定位在 0,但是......流是空的,并且没有位置 0。改变它

ss.seekp(0, std::ios_base::end);

它以这种方式工作。

关于c++ - 如何在stringstream的位置写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34211547/

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