Мне нужно вручную добавить спецификацию UTF-8 в простой текстовый файл. Однако я не могу написать спецификацию следующим способом. С моим довольно ограниченным знанием C++ я действительно не понимаю, что я делаю неправильно. Я предполагаю, что это должно быть связано с тем фактом, что я пишу только 3 байта - и система ожидает, что я буду писать кратные 2 по любой причине. Код скомпилирован в наборе символов Unicode. Любые подсказки, указывающие на меня в правильном направлении, приветствуются.Получение исключения при написании спецификации UTF-8
FILE* fStream;
errno_t e = _tfopen_s(&fStream, strExportFile, TEXT("wt,ccs=UTF-8")); //UTF-8
if (e != 0)
{
//Error Handling
return 0;
}
CStdioFile* fileo = new CStdioFile(fStream);
fileo->SeekToBegin();
//Write BOM
unsigned char bom[] = { 0xEF,0xBB,0xBF };
fileo->Write(bom,3);
fileo->Flush(); //BOOM: Assertion failed buffer_size % 2 == 0
Я не совсем понимаю ваш вопрос. Из документации [_tfopen_s] (https://msdn.microsoft.com/en-us/library/z5hh6ee9.aspx): * «Файлы, открытые для записи в режиме Unicode, автоматически присваиваются спецификации.» * открывают файл для записи, и вы включаете режим Unicode, поэтому нет необходимости вручную записывать спецификацию вручную. – IInspectable
@Inpectpectable Я согласен с тем, что это упоминание в документации - однако я никогда не испытывал, что спецификация автоматически записывается при использовании строк кода выше. – Marwie