我正在使用只包含char [32]的结构写入二进制文件.我基本上需要通过对字符串数组执行各种计算并连接结果来格式化每个数据块.我试图将std :: string复制到没有空终止的char数组.我读到的越多,我就越困惑.如果我做:
struct block{ char data[32]; }; block blocks[2048]; std::string buffer; buffer = "12345678123456781234567812345678"; strcpy(blocks[0].data,buffer.c_str());
我得到一个错误,因为使用c_str()添加空终止符使字符串长度为33.如果我从字符串中减去一个字符,它可以工作,但后来我有空终结符,我不想要.我可以成功地做到以下几点:
strcpy(blocks[0].data,"12345678123456781234567812345678");
但我想先构造字符串,因为它通常涉及连接各种数组的不同字符串.例如,我可以用std :: string来做到这一点:
std::string buffer = stringArray1[0] + stringArray2[0]; strcpy(blocks[0].data,buffer.c_str());
但后来我再次使用null终止符.我只想复制std :: string中的字符而没有空终止符.
我使用的是VC 6.0.
解决方法@H_301_18@
使用
memcpy
而不是strcpy,这就是它的用途:
memcpy(blocks[0].data,buffer.data(),sizeof(blocks[0].data));
memcpy
而不是strcpy,这就是它的用途:
memcpy(blocks[0].data,buffer.data(),sizeof(blocks[0].data));