Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 1
1

Конвертация из std::string в std::wstring

22.08.2017, 10:35. Показов 1211. Ответов 3

Author24 — интернет-сервис помощи студентам
В std::string находятся прочитанные данные из файла, в котором содержатся смешанные данные (что-то на подобии БД, куча таблиц, подтаблиц,с заголовками, смещениями и все в одной куче). Так часть из них это utf16le. Как правильно вытянуть эти данные в std::wstring для последующего преобразования в utf8 или даже может в ср1251. Преобразовывать думаю с помощью WideCharToMultiByte
Для простоты,пусть в std::string, только utf16le.

Или может стоит изначально данные запихнуть в какой-то другой тип данных и по мере необходимости пихать их в std::string?
В основном обработка идет побайтно.

Добавлено через 13 часов 8 минут
сделал так:
C++
1
2
3
4
5
6
7
8
9
std::string in;
std::vector <unsigned short> utf16;
...
в in попадает последовательность по одну байту
...
for(int i=0;i<in.size(),i=i+2)
{
utf16.push_back(in[i]|in[i+1]<<8);
}
Добавлено через 3 минуты
или есть более красивые идеи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2017, 10:35
Ответы с готовыми решениями:

Как правильно перевести std::wstring в std::string ?
Собственно как? :)

Как привести std::wstring к std::string?
Как привести std::wstring к std::string?

Преобразование из std::string - в std::wstring
Как попроще преобразовать string в широкую строку wstring? Так не получается: #include...

Std::string and std::wstring convert
случайно наткнулся на такую вот конвертацию std::string в std::wstring std::string text(&quot;text&quot;);...

3
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
22.08.2017, 12:50 2
Держите. Незачем велосипедить. А вот результат.

C++
1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>
using namespace std;
 
int main() {
    string s = "Hello world!";
    cout << "cout says " << s << endl;
    
    wstring ws = wstring(s.begin(), s.end());
    wcout << "wcout says " << ws << endl;
}
0
Любитель чаепитий
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.08.2017, 13:11 3
Цитата Сообщение от maxm Посмотреть сообщение
wstring(s.begin(), s.end())
Корректен ли каст из string в wstring?
0
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
22.08.2017, 17:38 4
Цитата Сообщение от Profanvantuz Посмотреть сообщение
для последующего преобразования в utf8 или даже может в ср1251
Конвертировать wide char в multibyte cp1251 целесообразно только в пределах кирилицы и латиницы. Иначе только юникод (т.е. utf-8) или соответствующая кодовая страница. Хранить можно и в std::string, только надо понимать что это будут просто сырые данные а не символы (прим. к utf-8).
0
22.08.2017, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2017, 17:38
Помогаю со студенческими работами здесь

std::string -> std::wstring
Как перевести данный код в код с использованием wstring ( посути использовать...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

Конвертация символов в std::wstring
Привет. Помогите пожалуйста, как cконвертировать символы unicode, лежащие в std::wstring, в ANSI...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru