如何在C++中构建二进制字符串?构建一个二进制字符串C++
我想拥有它的格式如下:
std::string str = signed long (4bytes) "fill out zeros" 0x000 (8bytes) signed long (4bytes)
注意我不想可视二进制表示,但该字符串
如何在C++中构建二进制字符串?构建一个二进制字符串C++
我想拥有它的格式如下:
std::string str = signed long (4bytes) "fill out zeros" 0x000 (8bytes) signed long (4bytes)
注意我不想可视二进制表示,但该字符串
针对您的特定应用:
std::string data(12, 0); // construct string of 12 null-bytes
int32_t x, y; // populate
char const * const p = reinterpret_cast<char const *>(&x);
char const * const q = reinterpret_cast<char const *>(&y);
std::copy(p, p + 4, data.begin() );
std::copy(q, q + 4, data.begin() + 8);
谢谢!这是我正在寻找的东西。 – user1432032 2012-08-05 23:09:04
不会创建char(12)的0吗?必须检查文档... – 2012-08-05 23:24:47
@MooingDuck:你说得对,修好了。谢谢! – 2012-08-05 23:30:55
char buffer[1024];
// fill up buffer with whatever
char *end = afterLastChar;
std:string s(buffer, afterLastChar);
使用std :: vector的<在实际的二进制数据uint8_t>,这不是字符串
恕我直言,最好的办法是以明确的方式管理'uint8_t *'(或者通过写入单个字节,通过bitshifts和显式endianess或通过求取未对齐的整数加载/存储),可能包裹在一个'std :: array'。 –
akappa
2012-08-05 21:58:36
虽然我仍然需要它导致一个字符串...它会工作转移到一个字符,你稍后追加到字符串? – user1432032 2012-08-05 22:04:44
为什么你想在'std :: string'中使用?这不是一个字符序列;它是一个任意的字节数组。所以使用'std :: vector'。 –
2012-08-05 22:07:36