我正在使用仅包含 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。