wofstream усекается при больших данных, полученных из реестра

#c #wofstream

#c #wofstream

Вопрос:

Мой wofstream усекается при попытке записать широкие символы в файл.

 my_file << L"something";

wstring foo = //get a value from the registry ..

// foo contains 您好

my_file << foo;

my_file << "stuff that will never be seen";
  

Комментарии:

1. Что такое объявление my_file ?

2. Вы пробовали очищать и закрывать после того, как все напишете? wofstream

3. ага. Боже, почему это так сложно… Я буквально занимаюсь этой проблемой уже несколько недель. Недели и недели.

4. Какой тип раздела реестра вы пытаетесь получить?

5. Можете ли вы дать нам полную программу, которая иллюстрирует проблему.

Ответ №1:

В вашем потоке устанавливается бэдбит (или другой бит ошибки), что делает его бесполезным для любой последующей операции. Вероятно, это находится на границе поведения, определенного реализацией (особенно для wchar_t s). Это просто не будет работать так, как вы этого хотите.

Наибольшая вероятность ошибки заключается в том, что символы не помещаются в один 2-байтовый wchar_t , что приводит к блокировке STL Microsoft.