我正在使用一个只包含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());
但是我又遇到了空终止符的问题。我只想复制std::string中的字符,而不包括空终止符。
我正在使用VC++ 6.0。