首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加额外字节的C++字符串流

添加额外字节的C++字符串流
EN

Stack Overflow用户
提问于 2015-01-29 09:46:58
回答 1查看 1.9K关注 0票数 4

我想从我还在学习C++这个事实开始,有些事情仍然让我感到困惑。

我想要完成的是构建一个字节流来发送一个套接字。我正在尝试创建一个长度为1536字节的分组,用于握手

代码语言:javascript
复制
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

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 09:50:35

此处使用的std::stringstreamoperator<<(char const*)将其参数视为以零结尾的C样式字符串,而randData数组不是以零结尾的。

由于randData实际上不是一个C风格的字符串,看起来它最终可能包含空字节,所以修复方法是使用

代码语言:javascript
复制
s1Stream.write(randData, sizeof(randData));

请注意,这个问题也适用于zeroVal,除了zeroVal的任何内容都不会写入s1Stream,因为它在第一个字节处为零结束。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28211468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档