目前,我有一个名为Data
. 我正在使用以下方法寻找字符串流的开头:
Data.seekp(0, std::ios::beg);
然后,我尝试将 2 个整数写入字符串流的前 8 个字节(以前,前 8 个字节设置为 0)
Data.write(reinterpret_cast<char*>(&dataLength),sizeof(int));
Data.write(reinterpret_cast<char*>(&dataFlags),sizeof(int));
使用 Visual C++ 调试器并设置断点时,我可以看到dataLength
等于 12 和dataFlags
0,因此应该分别写入 12 和 0。
写完2个整数后,好像没有效果。然后我使用以下代码打印我的字符串流数据:
char* b = const_cast<char*>(Data.str().c_str());
for (int i = 0; i < dataLength; i++)
{
printf("%02X ",(unsigned char)b[i]);
}
我可以看到我的数据的前 8 个字节仍然是 0,即使我只是用两个整数覆盖了前 12 个字节(其中第一个整数!= 0)。
为什么我的字符串流中的数据没有被正确覆盖?