我正在使用一個只包含char [32]的結構寫入二進制文件。我基本上需要通過對字符串數組執行各種計算並連接結果來格式化每個數據塊。我試圖將一個std :: string複製到一個沒有空終止的char數組中。我讀得越多,我就越困惑。如果我做的:C++拷貝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。的strcpy
你知道,VC++ 6.0就像IE 6 Hidious。如果您能夠切換編譯器,可以做到這一點並且快速。 –
謝謝大家的回覆。我結束了使用memcpy;我曾嘗試過,錯誤地使用std :: string.c_str而不是std :: string.data。此外,我們通常使用VS2010,但這是一款傳統產品,需要一些尚未更新的舊庫以支持任何過去的VS6.0。 –