Здравствуйте, KaktusAgava, Вы писали:
KA>У меня такой вопрос: мне нужно получить ifstream файла, который в кодировке utf-16, с автоматическим преобразованием в utf-8.
Для автоматического преобразования, возможно, нужен декоратор над WideCharToMultiByte.
KA>У меня такой вопрос: мне нужно получить ifstream файла, который в кодировке utf-16, с автоматическим преобразованием в utf-8. KA>Visual Studio 2010.
KA>Есть подозрение, что это делается с помощью codecvt_utf8, но я никак не догоняю как его использовать
KA>В общем, мне нужно примерно так:
KA>ifstream infile; KA>infile.open("c:\\temp\\example-utf16.txt", ios::in); KA>if (infile.is_open()) KA>{ KA>std::string s; KA>getline(infile, s); //в s д.б. utf-8 KA>}
Насколько помню, что-то типа:
infile.imbue(std::locale(infile.getloc(), new codecvt_utf8));
в начале работы.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, KaktusAgava, Вы писали:
KA>Привет всем.
KA>У меня такой вопрос: мне нужно получить ifstream файла, который в кодировке utf-16, с автоматическим преобразованием в utf-8. KA>Visual Studio 2010.
KA>Есть подозрение, что это делается с помощью codecvt_utf8, но я никак не догоняю как его использовать
KA>В общем, мне нужно примерно так:
KA>ifstream infile; KA>infile.open("c:\\temp\\example-utf16.txt", ios::in); KA>if (infile.is_open()) KA>{ KA>std::string s; KA>getline(infile, s); //в s д.б. utf-8 KA>}
Пользуйтесь билдером codegear. Visual только для специалистов микросовт.
Здравствуйте, KaktusAgava, Вы писали:
KA>У меня такой вопрос: мне нужно получить ifstream файла, который в кодировке utf-16, с автоматическим преобразованием в utf-8.
KA>Есть подозрение, что это делается с помощью codecvt_utf8, но я никак не догоняю как его использовать
codecvt_utf8 используется в случае, когда файл в кодировке utf-8, а при чтении нужно преобразовать в ucs-2 или ucs-4. Фацет для твоего случая в стандартной библиотеке отсутствует, по аналогии с именами стандартных фацетов его имя должно быть codecvt_utf16_utf8.
Здравствуйте, KaktusAgava, Вы писали:
KA>Привет всем.
KA>У меня такой вопрос: мне нужно получить ifstream файла, который в кодировке utf-16, с автоматическим преобразованием в utf-8. KA>Visual Studio 2010.
KA>Есть подозрение, что это делается с помощью codecvt_utf8, но я никак не догоняю как его использовать
KA>В общем, мне нужно примерно так:
KA>ifstream infile; KA>infile.open("c:\\temp\\example-utf16.txt", ios::in); KA>if (infile.is_open()) KA>{ KA>std::string s; KA>getline(infile, s); //в s д.б. utf-8 KA>}