Чтение файлов в кодировке utf8 (linux+C++)
От: Vostok Россия  
Дата: 18.08.09 10:30
Оценка:
Решил озадачится этим вопросом. Прочитал с форумов 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/

Но там тоже нужно использовать этот хедер.

Заранее благодарен за помощь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.