Решил озадачится этим вопросом. Прочитал с форумов rsdn про фасеты, решил использовать из набора boost: utf8_codecvt_facet. Чтение решил выполнить по алгоритму:
http://www.gamedev.ru/code/forum/?id=73328 — 4-ый комментарий.
Соответственно вопрос: Как же скомпилить нормально тест? Компиляция проваливается так:
g++ test.cpp -o test.exe
/home/vostok/tmp/ccfvenOQ.o: In function `boost::archive::detail::utf8_codecvt_facet::utf8_codecvt_facet(unsigned int)':
test.cpp

.text._ZN5boost7archive6detail18utf8_codecvt_facetC1Ej[boost::archive::detail::utf8_codecvt_facet::utf8_codecvt_facet(unsigned int)]+0x19): undefined reference to `vtable for boost::archive::detail::utf8_codecvt_facet'
collect2: ld returned 1 exit status
При этом:
$ g++ --version
i586-alt-linux-g++ (GCC) 4.1.2 20070626 (ALT Linux, build 4.1.2-alt5)
Текст теста:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
#include <boost/archive/detail/utf8_codecvt_facet.hpp>
using namespace boost;
int main()
{
wifstream fIn;
fIn.open("l2");
locale old_locale;
locale utf8_locale(old_locale, new archive::detail::utf8_codecvt_facet);
fIn.imbue(utf8_locale);
wstring<--->str;
fIn>>str;
wcout << str;
fIn.close();
return 0;
}
Пробовал ещё
http://chab.royalinfo.ru/how-to-read-unicode-text-file-in-c/
Но там тоже нужно использовать этот хедер.
Заранее благодарен за помощь.