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