конвертирование string в wstring
От: eugene hermann Беларусь  
Дата: 28.04.08 17:29
Оценка:
корректно ли для сабжа использовать std::wstring::assign()?

т.е. что-то типа: wstr.assign(str.begin(), str.end());
Re: конвертирование string в wstring
От: Константин Л. Франция  
Дата: 28.04.08 17:35
Оценка:
Здравствуйте, eugene hermann, Вы писали:

EH>корректно ли для сабжа использовать std::wstring::assign()?


EH>т.е. что-то типа: wstr.assign(str.begin(), str.end());


нет
Re[2]: конвертирование string в wstring
От: eugene hermann Беларусь  
Дата: 28.04.08 17:54
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>нет


Вот и я так думал. Но почему-то оно работает, причем в обе стороны. Непонятно.
Re[3]: конвертирование string в wstring
От: Аноним  
Дата: 28.04.08 18:25
Оценка:
EH>Вот и я так думал. Но почему-то оно работает, причем в обе стороны. Непонятно.
english only
Re[4]: конвертирование string в wstring
От: eugene hermann Беларусь  
Дата: 28.04.08 18:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>english only


Ничего другого вобщемто не надо. Всё в пределах ASCII 127.
Re[3]: конвертирование string в wstring
От: Кодт Россия  
Дата: 28.04.08 18:39
Оценка:
Здравствуйте, eugene hermann, Вы писали:

EH>Вот и я так думал. Но почему-то оно работает, причем в обе стороны. Непонятно.


"Лифт не работает? — Работает, но плохо"

Поэлементное копирование — каждому char'у сопоставляет wchar_t.
Такое соответствие есть у кодировки Windows Western (1252).
Но и то, поскольку char знаковый, то при приведении к wchar_t он расширяется до signed int, а потом обрезается до разрядности wchar_t.
Поэтому корректно работает преобразование только ASCII (символы с кодами 0-127).

В обратную сторону — из wchar в char — все символы за пределами cp1251, естественно, преобразуются фиг знает во что.

А если ты используешь wstring только как контейнер, не показывая его содержимого людям (или показывая через приведение обратно в string), то это не показатель корректной работы.
С таким же успехом можно было вместо wstring использовать vector<double>.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[4]: конвертирование string в wstring
От: Аноним  
Дата: 28.04.08 18:41
Оценка:
К>С таким же успехом можно было вместо wstring использовать vector<double>.
можно и basic_string<double>
Re[5]: конвертирование string в wstring
От: Кодт Россия  
Дата: 28.04.08 18:46
Оценка:
Здравствуйте, eugene hermann, Вы писали:

EH>Ничего другого вобщемто не надо. Всё в пределах ASCII 127.


Тогда зачем wstring?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[6]: конвертирование string в wstring
От: eugene hermann Беларусь  
Дата: 28.04.08 19:06
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Тогда зачем wstring?


Всё просто. В таком виде принимаю данные, а дальше их надо будет скормить либе в API которой только char*. И наоборот.
Re[7]: конвертирование string в wstring
От: Кодт Россия  
Дата: 29.04.08 09:55
Оценка:
Здравствуйте, eugene hermann, Вы писали:

К>>Тогда зачем wstring?


EH>Всё просто. В таком виде принимаю данные, а дальше их надо будет скормить либе в API которой только char*. И наоборот.


Возможно, что этот API предполагает строку в какой-то заданной кодировке.
На выбор:
— текущая локаль
— UTF-8
— ASCII (ты ориентируешься на этот случай)
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: конвертирование string в wstring
От: Mr.Cat  
Дата: 29.04.08 10:53
Оценка: 3 (1)
Здравствуйте, eugene hermann, Вы писали:
EH>корректно ли для сабжа использовать std::wstring::assign()?

Попробуйте utf-8 codecvt facet.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.