构建一个二进制字符串c++; 如何在C++中构建二进制字符串?

构建一个二进制字符串c++; 如何在C++中构建二进制字符串?,c++,string,binary,C++,String,Binary,我希望它采用以下格式: std::string str = signed long (4bytes) "fill out zeros" 0x000 (8bytes) signed long (4bytes) 注意:我不想要可查看的二进制表示法,但是字符串中的实际二进制数据使用std::vector,这不是用于特定应用程序的字符串: char buffer[1024]; // fill up buffer with whatever char *end = afterLastChar; st

我希望它采用以下格式:

  std::string str = signed long (4bytes) "fill out zeros" 0x000 (8bytes) signed long (4bytes)

注意:我不想要可查看的二进制表示法,但是字符串中的实际二进制数据使用std::vector,这不是用于特定应用程序的字符串:

char buffer[1024];
// fill up buffer with whatever
char *end = afterLastChar;
std:string s(buffer, afterLastChar);
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);
std::字符串数据(12,0);//构造12个空字节的字符串
int32_t x,y;//居住于
char const*const p=重新解释强制转换(&x);
char const*const q=重新解释强制转换(&y);
std::copy(p,p+4,data.begin());
std::copy(q,q+4,data.begin()+8);

IMHO最好的方法是以显式方式管理
uint8\u t*
(通过位移位和显式尾数写入单个字节,或通过使用未对齐的整数加载/存储),可能包装在
std::array
中。尽管我仍然需要它,以生成字符串。。。转换成一个字符,然后附加到字符串中,行吗?为什么要在
std::string
中使用这个字符?这不是一个字符序列;它是一个任意字节数组。因此,请使用
std::vector
“注意,我不想要可查看的二进制表示,而是字符串中的实际二进制数据”这意味着什么?我的意思是,我不想要包含“1”和“0”(“111111111 00…”)字符的可打印字符串,而是ascii(111111 00)值。谢谢!我一直在寻找这样的东西。