| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Чем отличается std::wstring от std::string? |
| Автор: Alca 28.10.2008, 10:13 |
| Чем отличается std::wstring от std::string? |
| Автор: Alek86 28.10.2008, 10:16 |
| первое - строки 2х-байтных символов второе - однобайтных |
| Автор: Alca 28.10.2008, 10:24 | ||
Это типа юникод или как? |
| Автор: Alek86 28.10.2008, 10:29 |
| 1 из его видов Добавлено через 51 секунду кстати, в wchar_t не обязательно именно 2 байта. но если ты пишешь только под винду, то можно считать, что 2 |
| Автор: Alca 28.10.2008, 10:44 |
| Спасиб. |
| Автор: J0ker 28.10.2008, 18:35 |
не 2х-байтных, а wchar_t wchar_t стандартом не специфицирован - на gcc например он 4-х байтный |
| Автор: Alek86 28.10.2008, 22:53 | ||
|
| Автор: Alca 1.11.2008, 14:39 |
| В каких случаях может пригодиться std::wstring? В каких случаях используется? |
| Автор: HappyLife 1.11.2008, 17:18 |
| Alca, Вместо std::string, если ты пишеш программу с юникодным шрифтом. |
| Автор: Alca 2.11.2008, 00:20 |
| Спасибо. |
| Автор: Alca 28.11.2008, 18:28 |
| Зачем использовать std::string (какой сенс), если есть std::wstring? |
| Автор: JackYF 28.11.2008, 18:43 |
Скорость, размер. |
| Автор: Alca 28.11.2008, 18:50 |
| Коротко и ясно, спасибо. |
| Автор: 586 28.11.2008, 20:08 | ||
вот чем:
|
| Автор: J0ker 28.11.2008, 20:54 | ||
это-то тут при чем? |
| Автор: JackYF 28.11.2008, 21:41 |
Как это при чём? Ты действительно считаешь, что скорость обработки и размер ОЗУ для хранения двух-и-более-байтовых символов аналогичны этим же показателям для однобайтовых? |
| Автор: J0ker 28.11.2008, 22:48 | ||
я действительно считаю что это лишь оооооочень слабое следствие, причем весьма спорное и отношения к делу не имеющее юникод нужен для унификации кодировок различных языков, а ANSI набор нужен как минимум для обратной совместимости и для приложений не нуждающихся в поддержки различных языков |
| Автор: Kallikanzarid 29.11.2008, 10:49 | ||
Methinks это имеет значение, только если твоя программа занимается в основном обработкой строк. |
| Автор: Alca 29.11.2008, 13:13 | ||
При том что размер wchar_t в двое больше размера char. |
| Автор: J0ker 29.11.2008, 19:02 | ||||
ну иногда и вчеверо и что из этого? я не думаю что десятые доли процента производительности в среднестатистическом приложении играют какую-то роль - это во-первых во-вторых, складывается впечатление, что сначала были wchar_t, а потом, чтобы ускорить, придумали char было как раз наоборот, и причины были несколько другие а нам в ответ на то, зачем нужны char и wchar_t канифолят мозги про какие-то размер и производительность бредить изволите, господа |
| Автор: MAKCim 29.11.2008, 19:12 |
| J0ker, |
| Автор: MAKCim 29.11.2008, 19:37 | ||
вообще ради интереса можно запустить следующую программу
результаты несколько неожиданные |
| Автор: J0ker 29.11.2008, 22:38 |
неожиданные для тех, кто думает, что сравнение строк == сравнение байтов на самом деле существует такое понятие как collation |
| Автор: MAKCim 30.11.2008, 11:07 |
| J0ker, это понятно неожиданно то, что разница почти в _два_ раза |
| Автор: J0ker 30.11.2008, 19:08 | ||||||
у меня все нормально
количество увеличено в 16 раз, вместо gettimeofday - clock |
| Автор: MAKCim 1.12.2008, 09:42 |
| J0ker, clock() менее точен по крайней мере в Linux он использует значение utime для процесса, а оно имеет латентность 1/HZ через clock() аналогичная ситуация на чем тестил? (ОС, компилятор) |
| Автор: Mayk 1.12.2008, 09:46 |
у меня вообще было так - первый запуск разница в два раза, второй запуск - одинаково. это было вчера на локальной машине, я тогда поленился рез-ты копировать. |
| Автор: J0ker 2.12.2008, 08:13 | ||
какая разница наскока clock менее точен, если счет идет на тысячи тестал на msvc9, winxp Добавлено через 6 минут и 29 секунд разница может быть из-за того, что на VC wchar_t не юникод-комплаянт - 2 байта вместо четырех - при правильном юникоде коллэйшен может быть сложнее |
| Автор: MAKCim 2.12.2008, 09:50 |
вооще говоря это просто утверждение насчет clock() и Linux с чего ты взял, что это имеет отношение к теме? там даже разделение идет специально пустой строкой |