Ответ 1
Хорошо, о переносном варианте. Это легко, если вы используете стандарт C++11
(потому что есть много дополнительных, таких как "utf8"
, что навсегда разрешает эту проблему).
Но если вы хотите использовать многоплатформенный код со старыми стандартами, вы можете использовать этот метод для записи с потоками:
- Прочитайте статью об конвертере UTF для потоков
- Добавить
stxutif.h
в ваш проект из источников выше -
Откройте файл в режиме ANSI и добавьте спецификацию в начало файла, например:
std::ofstream fs; fs.open(filepath, std::ios::out|std::ios::binary); unsigned char smarker[3]; smarker[0] = 0xEF; smarker[1] = 0xBB; smarker[2] = 0xBF; fs << smarker; fs.close();
-
Затем откройте файл как
UTF
и напишите там свой контент:std::wofstream fs; fs.open(filepath, std::ios::out|std::ios::app); std::locale utf8_locale(std::locale(), new utf8cvt<false>); fs.imbue(utf8_locale); fs << .. // Write anything you want...