如何在字符串流中的位置书写
How to write at position in stringstream
我需要将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()
。
我只是设法证实了我的怀疑:在删除ss.seekp(0)
:后,.seekp()
应该受到谴责
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);
这样它就起作用了。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何在字符串流中的位置书写