В настоящее время у меня есть поток строк с именем Data
. Я ищу начало потока строк, используя:
Data.seekp(0, std::ios::beg);
Затем я пытаюсь записать 2 целых числа в первые 8 байтов потока строки (ранее первые 8 байтов были установлены в 0)
Data.write(reinterpret_cast<char*>(&dataLength),sizeof(int));
Data.write(reinterpret_cast<char*>(&dataFlags),sizeof(int));
Используя отладчик Visual C ++, и когда я устанавливаю точку останова, я вижу, что dataLength
равен 12, а dataFlags
равен 0, поэтому он должен писать 12 и 0 соответственно.
После записи 2 целых чисел это, похоже, не дало эффекта. Затем я печатаю свои данные в виде строки, используя следующий код:
char* b = const_cast<char*>(Data.str().c_str());
for (int i = 0; i < dataLength; i++)
{
printf("%02X ",(unsigned char)b[i]);
}
Я вижу, что первые 8 байтов моих данных по-прежнему равны 0, хотя я только что перезаписал первые 12 байтов двумя целыми числами (где первое целое число! = 0).
Почему данные в моем потоке строк не перезаписываются должным образом?