Записать файлы csv с меткой порядка байтов (BOM), используя С++?

Я пытаюсь создать файл csv с UTF8 со спецификацией, используя С++. Может ли кто-нибудь помочь мне, как это сделать?


person Nithin    schedule 17.11.2011    source источник


Ответы (2)


Просто поместите спецификацию в строку и запишите ее в свой файл (используя любой метод, который вы используете, например, потоки или классический cstdio):

const char *bom = "\xef\xbb\xbf"; // UTF-8
const char *bom_alt = {0xef, 0xbb, 0xbf, 0}; // the null termination is optional, depending on how you write it later on

Тогда вам просто нужно убедиться, что вы действительно пишете правильную UTF-8, а не ANSI или широкие строки символов. Я бы порекомендовал для этого UTF8-CPP (уже использовал его в рабочих проектах и ​​отлично работает без необходимости использовать какую-нибудь огромную библиотеку, например Boost).

person Mario    schedule 17.11.2011

Если вы используете библиотеку Qt, вы можете использовать QTextStream::setGenerateByteOrderMark(bool) для добавления спецификации.

person Silas Parker    schedule 17.11.2011