我想从我还在学习C++这个事实开始,有些事情仍然让我感到困惑。
我想要完成的是构建一个字节流来发送一个套接字。我正在尝试创建一个长度为1536字节的分组,用于握手
std::stringstream s1Stream;
char randData[1528], zeroVal[4] = {0, 0, 0, 0};
memset(&randData, 1, sizeof(randData)); // Fill the buffer with data
s1Stream << timestampVal; // 4 bytes
s1Stream << zeroVal; // 4 bytes
s1Stream << randData; // 1528 bytes当我将s1Stream转换为string并检查该字符串的size()时,程序表示大小为1541。
我做错了什么?
发布于 2015-01-29 09:50:35
此处使用的std::stringstream的operator<<(char const*)将其参数视为以零结尾的C样式字符串,而randData数组不是以零结尾的。
由于randData实际上不是一个C风格的字符串,看起来它最终可能包含空字节,所以修复方法是使用
s1Stream.write(randData, sizeof(randData));请注意,这个问题也适用于zeroVal,除了zeroVal的任何内容都不会写入s1Stream,因为它在第一个字节处为零结束。
https://stackoverflow.com/questions/28211468
复制相似问题