Я пишу в двоичный файл, используя структуру, которая просто содержит символ [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.