Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Enno
266 / 169 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
#1

Как с помощью getline считать двухбайтовые символы? - C++

30.01.2015, 10:56. Просмотров 501. Ответов 3
Метки нет (Все метки)

В общем надо считать строку из файла. Если однобайтовая - всё ок. Как только wchar_t - начинается дурдом. getline в упор не видит какой параметр ему передают и забивает каждый байт в каждый символ строки. Т.е. для строки типа wstring строка в файле "666" которая в hex выглядит как "360036003600" вводится как "003600000036000000360000". Из-за таких особенностей я не могу работать с wide-символами. Кто знает как победить это дело? Может какой-нибудь wgetline есть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2015, 10:56     Как с помощью getline считать двухбайтовые символы?
Посмотрите здесь:

С помощью cin.getline считать все строки файла в контейнер (вектор или очередь) - C++
Можете пожалуйсто написать код, где можно с помощью cin.getline считать все строки файла в контейнер (вектор или очередь), потом из...

Функция getline(). Как исключить знаки препинания (символы)? - C++
Задача следующая: Из файла source.txt прочесть слово Отправить запрос в БД Получить перевод слова Записать в файл...

Как узнать, был ли найден в строке, читаемой с помощью функции std::getline(), символ \n ? - C++
Как узнать результат работы в std::getline(SS, Res, '\n'); был найден в потоке первод строки или нет?

getline() (не получается считать информацию с файла) - C++
Здравствуйте. У меня есть файл вида: volleyball 1 sports.ru 500 volleyball football Первая строка - искомый тег, вторая -...

Считать строку getline и вывести ее в ListBox - C++ WinAPI
считываю строки из файла и пытаюсь вывести в ListBox. Если в файле записано: 1 2 3 то в ListBox они выводятся 1|||||||| ...

Как считать русские символы как строку в консоли - C++
На консоль текст русский выводиться,а вот при считывании он в казябриках. #include "stdafx.h" #include <iostream> #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
31.01.2015, 13:46     Как с помощью getline считать двухбайтовые символы? #2
Enno, Посмотри тут, код под вторым спойлером в посте. Нужно будет убрать из начала примера (main) вот эти строки
C++
1
2
3
4
    typedef basic_streambuf_win32<wchar_t> wstreambuf_win32;
 
    wstreambuf_win32 wb;
    std::wcout.rdbuf(&wb);
Enno
266 / 169 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
31.01.2015, 14:18  [ТС]     Как с помощью getline считать двухбайтовые символы? #3
Ну да, теперь взлетело. А в чём фишка? В том что с помощью imbue locale поменяли на какую-то хитрую? Я не шарю просто. Хотя вот в MinGW всё работает, считывается нормально без таких "преобразования".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2015, 14:25     Как с помощью getline считать двухбайтовые символы?
Еще ссылки по теме:

Как считать из файла символы и цифры одновременно? Структуры - C++
Имеется файл txt с таким заполнением: Gingi 25 12 1 Klinl 36 74 1 Frogo 963 32 2 Hlolo 69 85 1 Frodo 369 42 2 Ringo 951 43 1 ...

Задана строка, символы которой могут повторяться. Нужно удалить все символы строки с помощью наименьшего количества вычеркиваний - C++
Задана строка, символы которой могут повторяться. За один ход разрешается вычеркнуть в любом месте строки один или несколько одинаковых...

Как поэлементно считать текст с файла с помощью fstream, и сохранить каждый символ в массив? - C++
как поэлементно считать текст с файла,и сохранить каждый символ в массив?

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

Считать символы из файла в массив - C++
Пожалуйста. нужен код для реализации считывания символов из файла (.txt) в массив На С (и если не трудно, то и на С++) Спасибо

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
31.01.2015, 14:25     Как с помощью getline считать двухбайтовые символы? #4
Цитата Сообщение от Enno Посмотреть сообщение
А в чём фишка?
В том, что локаль по-умолчанию пытается преобразовывать к char.
Этим кодом, мы наоборот отключили какое-либо преобразование. Этот класс - заглушка. Позволяет на выходе получить ровно то, что пришло из файла.
В MinGW, видимо, преобразование и так не делается.
Yandex
Объявления
31.01.2015, 14:25     Как с помощью getline считать двухбайтовые символы?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru