Я хотел бы иметь возможность преобразовывать текст, прочитанный из файла в многобайтовые символы.
У меня есть следующий код C ++ на Windows, который работает для меня.
Когда я пытаюсь скомпилировать код на Linux, хотя это не удается.
#include <locale>
....
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> utfconv;
std::string line;
while (std::getline(infile, line))
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> utfconv;
std::wstring widestr = utfconv.from_bytes(line);
Это выдает следующие ошибки:
wstring_convert is not a member of std
codecvt_utf8_utf16 is not a member of std
expected primary-expression before wchar_t
Я использую GCC Red Hat 4.4.7-4.
Основываясь на том, что я прочитал, я импортировал «локаль», но все равно не могу ее найти.
Если wstring_convert недоступен, могу ли я сделать что-то эквивалентное?
Скорее всего, ваш стандарт установлен неправильно. std::wstring_convert
был впервые представлен в C ++ 11 и устарел в C ++ 17, поэтому вам нужно добавить флаг компилятора -std=c++11
или же -std=c++14
,
РЕДАКТИРОВАТЬ:
Только что увидел версию GCC, которую вы используете. Это путь устарел. Все должно работать нормально, если вы загружаете GCC 4.9.x или выше
Вам придется использовать более новую версию GCC. Предварительно скомпилированные версии являются частью Developer Toolset (доступны как часть большинства подписок Red Hat Enterprise Linux) или как часть коллекций программного обеспечения для CentOS: