63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||||||
1 | |||||||||||
Std::string and std::wstring convert02.10.2014, 11:47. Показов 18331. Ответов 20
Метки нет (Все метки)
случайно наткнулся на такую вот конвертацию std::string в std::wstring
Добавлено через 2 минуты а все отбой там же еще есть метод to_bytes тупанул Добавлено через 15 часов 49 минут погодите ка, написал вот так:
0
|
02.10.2014, 11:47 | |
Ответы с готовыми решениями:
20
ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri Как правильно перевести std::wstring в std::string ? Как привести std::wstring к std::string? Преобразование из std::string - в std::wstring |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.10.2014, 11:49 | 2 |
Какой был текст, в какой кодировке и какая конкретно функция упала?
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
02.10.2014, 11:51 [ТС] | 3 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.10.2014, 12:21 | 4 |
Проверь, что кодировка была действительно utf8. Мне бы пока компилятор найти, который поддерживает эти функции...
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
02.10.2014, 12:34 | 5 | |||||
Её нельзя использовать для преобразования string в wstring.
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
02.10.2014, 12:36 [ТС] | 6 |
MrGluck, что за???
0
|
0x10
|
02.10.2014, 12:52
#7
|
Не по теме: Не знаю насколько корректен/необходим код выше, но с кодировками каждый раз головняк. Посему вопрос: какая стоит исходная задача? Зачем нужно гонять string в wstring и обратно?
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
02.10.2014, 13:13 [ТС] | 8 |
а не все ли равно? просто нужна wstring строка, какая разница как она потом будет использоваться?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.10.2014, 13:17 | 9 |
Вот я и хочу понять: нужна ли она на самом деле и должна ли она до или после быть сконвертирована из/в std::string. И при чем тут кодировки.
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
02.10.2014, 13:23 [ТС] | 10 | |||||
что за странный вопрос нужна ли? если я говорю что мне нужна, то значит нужна иначе зачем бы я спрашивал? а про кодировки я вообще ничего не говорил...
Добавлено через 1 минуту короче пофиг у меня уже был старый вариант конвертации
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
02.10.2014, 13:28 | 11 |
Тем не менее в коде в первом посте использован std::codecvt_utf8_utf16:
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
02.10.2014, 13:35 | 12 |
Воу-воу-воу, я конечно не знаток, но твой код на первый взгляд не сильно отличается от того, как реализован std::wstring_convert. Что там по-твоему не так-то?
Добавлено через 3 минуты Ты уж определись-то, utf-8 тебе надо или кодировку текущей локали винды
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
02.10.2014, 13:37 [ТС] | 13 |
я без понятия, я просто содрал где то тот код... да и этот тоже мне важно сконвертить и мне фиолетово как это будет выглядеть внутри, точнее если покороче будет я только за
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
02.10.2014, 15:25 | 14 |
Надо всё-таки знать кодировку, в которую нужно сконвертировать данные. Иначе получается "иди туда, не знаю куда, принеси то, не знаю что"
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
02.10.2014, 15:51 | 15 |
Э-э-э, а это к чему вообще? Я может что-то не заметил, но речь-то вроде о std::wstring_convert? При чем тут std::to_wstring ?
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
02.10.2014, 16:31 | 16 |
Я как бы про другое писал.
Решение зависит от того, из какой кодировки в какую нужно переводить. Если из ANSI в UTF8, то std::wstring_convert не пойдёт т.к.
0
|
17.11.2015, 23:48 | 17 | |||||||||||||||
Да, в чистом visual c++ проблема с конвертированием (std::string(ANSI)<->std:wstring(ANSI)). В билдере просто тупо пишешь WideString wStr = str;
Вот мои заготовки для visual c++:
Хотя наверно лучше использовать auto_ptr, чтобы не попасться в ситуацию, описанную выше.
char *path = "некоторая строка"; auto wpath = to_wchar_str(path); // auto будет работать, если есть поддержка C++11
0
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
18.11.2015, 08:27 | 18 |
0
|
18.11.2015, 11:45 | 19 | |||||
С auto_ptr тоже гемор. Короче остановился на таком варианте.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||||||||||||||||
18.11.2015, 17:45 | 20 | ||||||||||||||||||||
К тому же он
deprecated , тем более, что раз уж используется shrink_to_fit , то это C++11.В StrTo можем получить утечки, если resize кинет исключение. Поэтому, я бы как минимум, предложил заменить
MultiByteToWideChar . Поправьте, если ошибаюсь.Лучше даже не std::vector , т.к. всякие векторные операции не нужны, а
0
|
18.11.2015, 17:45 | |
18.11.2015, 17:45 | |
Помогаю со студенческими работами здесь
20
Конвертация из std::string в std::wstring std::string -> std::wstring ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*') На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |