Файл в кодировке UTF-8, C++, 2009 год
От: igna Россия  
Дата: 12.10.09 08:32
Оценка:
Какой самый "стандартный" способ читать-писать файлы в кодировке UTF-8, без того чтобы самому определять codecvt?

Поскольку Boost в некотором смысле стандартен, так как является полигоном для обкатки того, что возможно будет включено в стандарт, поискал там и нашел utf8_codecvt_facet:

#include <fstream>
#include <locale>
using namespace std;

#include <boost/archive/detail/utf8_codecvt_facet.hpp>
using boost::archive::detail::utf8_codecvt_facet;

int main()
{
    wofstream out("out.txt");
    out.imbue(locale(std::locale(), new utf8_codecvt_facet()));
    out << L"ёпрст\n";
}


Однако:


Вроде бы под Linux'ом есть locale "en_US.UTF-8" (кстати, нельзя ли просто ".UTF-8"?), под Windows аналогичного "English_United States.UTF-8" вроде бы нет; может называется по другому?

Ну и нет ли другого, не связанного с locales решения?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.