|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78ascii таблица не там хранится? Ты не поверишь, но там нет даже ascii. Одни битики с байтиками в пачках разного размера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 23:05 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Отсылка к ASCII-Z строкам полезна только в том случае когда мы дёргаем функции ядра ОС и в этому случае нам уже ну "никак не вырутиться". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2020, 23:10 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Вот как раз ядра без особых проблем работают с UTF-8. Именно потому, что UTF-8 полностью сохраняет семантику "массив ненулевых байт, завершаемый нулевым (байтом)". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 05:46 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonУ тебя-ж не возникает желания переписать integer ? Довольно сложно переписать процессорный тип. А вот строки в процессоре нет - вольная воля. Как был Си продвинутым ассемблером, так и плюсы его не изменили.Причем процессор? В дельфи, java строка это класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 07:28 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dima T Давно уже придуман юникод, но ascii древнее, кое-где еще живет. в string, как я понимаю, utf8, а в wstring - unicode ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 07:46 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78 Dima T Давно уже придуман юникод, но ascii древнее, кое-где еще живет. в string, как я понимаю, utf8, а в wstring - unicode ? в wstring utf16, они оба юникод UTF - Unicode Transformation Format ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 08:01 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
насчёт конвертации: Код: plaintext 1. 2. 3. 4.
ещё: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 08:29 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
говорят авторwchar_t следует избегать практически во всех случаях (кроме тех, когда происходит взаимодействие с Windows API). а что будет в мультиязычных проектах, или если в какой-то либе wchar_t ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 08:38 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78 говорят авторwchar_t следует избегать практически во всех случаях (кроме тех, когда происходит взаимодействие с Windows API). а что будет в мультиязычных проектах, или если в какой-то либе wchar_t ? Мультиязычность никак не пострадает если UTF-16 заменить на UTF-8. Одно в другое конвертируется без потерь. Исторически сложилось что MS не как все. WinAPI (и другие продукты MS) используют UTF-16, а ПО и библиотеки других разработчиков в основном UTF-8. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 08:43 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
забыл уточнить - речь исключительно про линух с винды бежать надо подальше. Вот неплохая статья. авторНе так давно озадачился вопросом кроссплатформенной работы со строками в приложениях c++. Задача была, грубо говоря, поставлена как регистронезависимый поиск подстроки в любой кодировке на любой платформе. Итак, первое с чем пришлось понять — что со строками в Линуксе нужно работать в кодировке UTF-8 и в типе std::string, а в Windows строки должны быть в UTF-16LE (тип std::wstring) . Почему? Потому что это by design операционных систем. Хранить строки в std::wstring в Линуксе крайне накладно, поскольку один символ wchar_t занимает 4 байта (в Windows — 2 байта), а работать std::string в Windows нужно было во времена Windows 98. Для работы со строками определяем свой платформонезависимый тип: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 08:49 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dima T Исторически сложилось что MS не как все. WinAPI (и другие продукты MS) используют UTF-16, какое отношение к WINAPI имеет Java и Javascript? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 09:44 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Изопропил Dima T Исторически сложилось что MS не как все. WinAPI (и другие продукты MS) используют UTF-16, какое отношение к WINAPI имеет Java и Javascript? Понятия не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 10:07 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78 забыл уточнить - речь исключительно про линух Если линукс то берем std::string. Если винда и линукс то неизбежно директива компилятору if винда... else... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 10:08 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dima T Исторически сложилось что MS не как все. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 10:11 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Dima T Исторически сложилось что MS не как все. Под капотом все-равно UTF-16 остается. Со времен Win98 (может и W95) WinAPI функция при наличии строк в параметрах имеет две версии FuncA() и FuncW(), соответственно ANSII и WideChar (UTF-16). Как утверждают в книжках в Win98 основной была FuncA(), а FuncW() просто обертка с конвертацией и вызовом FuncA(). Но начиная с Win2000 все стало с точностью до наоборот FuncW() стала основной, а FuncA() оберткой. Не думаю что MS ядро виндовса перепишет на UTF-8, скорее всего если что и будут делать, то ограничатся комплектом оберток. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 10:23 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
PetroNotC SharpВ дельфи, java строка это класс. За Яву не скажу, но в Дельфи строка это обёртка для массива байт. В очень старых дельфях это был массив байт с длиной в нулевом элементе. В умеренно старых дельфях это был указатель на null-terminated массив с дополнительными полями длины и счётчика ссылок по отрицательным смещениям. В современных дельфях это простой указатель на null-terminated массив UTF-16. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 13:33 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PetroNotC SharpВ дельфи, java строка это класс. За Яву не скажу, но в Дельфи строка это обёртка для массива байт. Главное что снаружи удобный класс. А внутри прячем что угодно авторСимволы со значениями, которые находятся за пределами 16-битного диапазона и в диапазоне от 0x10000 до 0x10FFFF, называются дополнительными символами и определяются как пара charзначений. https://stackoverflow.com/questions/31206851/how-much-memory-does-a-string-use-in-java-8 https://docs.oracle.com/javase/tutorial/i18n/text/unicode.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 13:48 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
ResourceSpace Каждую простейшую стандартную операцию над текстом придётся отдельно гуглить и писать свои реализации? Это же капец, не? Весёлая тема. Посмеялся с твоих коментов. Да, это капец, но мы так живём. Можешь посмотреть библиотеку Boost String Algorithms . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 12:16 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Модератор: Так. Никого мы обсуждать не будем. Не личности и не образование. И коверкать не надо. Это - прописано в правилах форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 19:33 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
PetroNotC Sharp tip78 забыл уточнить - речь исключительно про линух Если линукс то берем std::string. Если винда и линукс то неизбежно директива компилятору if винда... else... wstring так то malloc делает на каждый чих, в отличие от string, который минимум раз выделяет (но это опять же на линухе тестировалось) значит все виндузятники обречены быть медленнее линуха ещё и из-за строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 19:53 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Чтоб виндузятники уж точно-точно были оберчены - нужен некий показательный бенчмарк со строками. А с бенчмарками есть проблема. Их - сложно обосновать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 20:01 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78 PetroNotC Sharp пропущено... ну а тогда в чем вопрос? Если линукс то берем std::string. Если винда и линукс то неизбежно директива компилятору if винда... else... wstring так то malloc делает на каждый чих, в отличие от string, который минимум раз выделяет (но это опять же на линухе тестировалось) значит все виндузятники обречены быть медленнее линуха ещё и из-за строк? Это что ещё за бред? Откуда такие выводы про работу с памятью? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 20:04 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78wstring так то malloc делает на каждый чих, в отличие от string, который минимум раз выделяет А тебя не смущает, что это специализации одного темплейта, то есть код у них абсолютно одинаковый?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 20:08 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
tip78 PetroNotC Sharp пропущено... ну а тогда в чем вопрос? Если линукс то берем std::string. Если винда и линукс то неизбежно директива компилятору if винда... else... wstring так то malloc делает на каждый чих, в отличие от string, который минимум раз выделяет (но это опять же на линухе тестировалось) значит все виндузятники обречены быть медленнее линуха ещё и из-за строк? Кстати, по идее, работа с utf-16 должна быть быстрее чем работа с utf-8. А быстрее всего utf-32. Так что текстовые процессоры на std::wstring должны обгонять аналоги на std::string. Хотя я тут не уверен, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 20:23 |
|
Несколько глупых вопросов по std::string и std::wstring
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov tip78wstring так то malloc делает на каждый чих, в отличие от string, который минимум раз выделяет А тебя не смущает, что это специализации одного темплейта, то есть код у них абсолютно одинаковый?.. Не специализация. Инстанцирование (явное). Если бы это были специализации, то код у них был бы разный. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 20:33 |
|
|
start [/forum/topic.php?fid=57&msg=40021919&tid=2017297]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 243ms |
total: | 517ms |
0 / 0 |