Нет специального способа чтения файла UTF-8, если вам не нужно обрабатывать метку порядка байтов (BOM).Из-за того, как работает кодировка UTF-8, функции, которые читают строки ANSI, также могут читать строки UTF-8.
Следующий код будет читать содержимое файла (ANSI или UTF-8) и выполнять паруконверсий.
#include <fstream>
#include <string>
#include <unicode/unistr.h>
int main(int argc, char** argv) {
std::ifstream f("...");
std::string s;
while (std::getline(f, s)) {
// at this point s contains a line of text
// which may be ANSI or UTF-8 encoded
// convert std::string to ICU's UnicodeString
UnicodeString ucs = UnicodeString::fromUTF8(StringPiece(s.c_str()));
// convert UnicodeString to std::wstring
std::wstring ws;
for (int i = 0; i < ucs.length(); ++i)
ws += static_cast<wchar_t>(ucs[i]);
}
}
Взгляните на онлайн-справку API .
Если вы хотите использовать ICU через Boost, см. Boost.Locale .