Написать современно06.11.2025, 13:50. Показов 14835. Ответов 154
Метки нет (Все метки)
Добрый день
Есть такой фрагмент Кликните здесь для просмотра всего текста
Хорошо, как написать грамотно, современно? И заодно универсально, чтобы работал не только с char* Спасибо
0
|
||||||
| 06.11.2025, 13:50 | |
|
Ответы с готовыми решениями:
154
Каковы современные решения написания программ? Как создают современные компьютерные игры? Современный интерфейс в C++ Builder |
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 13.11.2025, 02:11 | |||
|
0
|
|||
| 13.11.2025, 23:00 [ТС] | |
|
С "универсальностью" как-то совсем молчок. Надо полагать, следует юзать std::basic_string_view с нужным типом. Но меня смущает что Qt предлагает свой QStringView, причем без всяких темплейтов, заточенный на двухбайтовый юникод (QString но не только).
Мнения об альтернативных Qt классах/контейнерах различны. Одни считают Qt "великими троллями" и все их решения непогрешимыми. Другие наоборот, активно поднимают хвост и переводят все на std::, мол, сейчас это круче, и Qt должно использоваться "только для UI". Но по-любому Qt пишут хорошие профессионалы к которым стоит прислушаться. Так почему у них свой QStringView и что лучше юзать?
0
|
|
|
Нарушитель
6694 / 3090 / 1064
Регистрация: 01.06.2021
Сообщений: 11,929
|
||
| 13.11.2025, 23:32 | ||
|
1) для глубокой интеграции с остальным Qt. Если планируется использовать Qt-методы, то все равно придется использовать Qt-строковые классы, либо делать лишние конвертирования (в случае, если все-таки выбрать строки из стандартной библиотеки С++). 2) для юникода "из коробки". Библиотечные строки при работе с юникодом, грубо говоря, это просто массивы байт, которые ничего не знают о кодировке. А нац. кодировки это просто отстой, есть корявые локали, которые постоянно глючат. В то же время, строки Qt отлично работают со всеми языками и они исторически изначально были заточены под юникод, а именно UTF-16. Кстати, WinAPI тоже предпочитает двухбайтный юникод. Для передачи по сети UTF-8, конечно, крут, и вообще он заслужил статус универсальной юникодной кодировки, но практика показывает, что азиатские иероглифы там занимают 3-4 байта, тогда в UTF-16 всего 2. Именно по этой причине, как винапи, так Qt, предпочитают 2-байтный юникод. А вот какой класс Qt-строк выбрать для того или иного случая - об этом очень подробно написано в доку https://doc.qt.io/qt-6/string-processing.html *** Вот только при чем здесь Qt - мне не ясно. Тема была о написании современного кода на чистых плюсах.
0
|
||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||||
| 14.11.2025, 00:39 | ||||
|
0
|
||||
| 14.11.2025, 03:35 [ТС] | |||
|
0
|
|||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||||||
| 14.11.2025, 13:41 | ||||||
![]() Не по теме: По абстрактным рассуждениям я всё-вышел из чата, -вижу смысл только в решении конкретных, четко сформулированных задачь.
0
|
||||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|||||||
| 14.11.2025, 20:29 | |||||||
|
Кстати, хоть оно мне и не надо, -пошуршал по форуму, -получилось вывести кириллицу с файла utf-8, используя строки std::wstring(::iterator, _view), и std::wifstream. С такими настройками:
0
|
|||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 14.11.2025, 21:18 | |
|
0
|
|
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 14.11.2025, 21:49 | |
|
eva2326, хм, спасибо,- надо глянуть, чем заменили.
0
|
|
| 14.11.2025, 23:54 [ТС] | |
|
В данном случае "универсальность" - простая, очевидная вещь. Вот вверху несколько примеров кода который использует std::string_view. А данные в QString. Как мне из них получить std::string_view? Перегонять юникод в std::string? Это коряво и ненадёжно. Если уж перегонять - то наоборот, в юникод, хотя тоже не блеск, так, workaround. Надо юзать др классы вместо std::string_view, какие? Необязательно std::, такого условия/ограничения не было. Наоборот, сравнение разных подходов (std:: и Qt) может оказаться интересным/полезным.
0
|
|
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||||||||
| 15.11.2025, 01:29 | ||||||||
Почему бы не работать с Qt типами? Зачем это всё?
0
|
||||||||
| 15.11.2025, 12:48 [ТС] | ||||
|
Не по теме: По ходу дела
0
|
||||
|
Нарушитель
6694 / 3090 / 1064
Регистрация: 01.06.2021
Сообщений: 11,929
|
||||||||||||||||
| 15.11.2025, 13:51 | ||||||||||||||||
|
Igor3D, касательно продления жизни... мне когда-то нужно было перевести
wxString, полученный из текстового поля, в const char* и передать в качестве аргумента в функцию. Причем, нужно было, чтобы текст рассматривался как UTF-8. Т.е. чтобы в зависимости от того или иного входного символа выделялось от 1 до 4 char.Допустим, wstr это строка типа wxString. И прикол был в том, что в wxWidgets есть методы, которые быстро конвертируют в нужный тип
Правильное решение будет так:
Так что, действительно, нужно быть очень осторожным при всяких конвертированиях строк из фреймворков.
1
|
||||||||||||||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|||
| 15.11.2025, 14:37 | |||
|
зы: извиняюсь, что не по теме - выше мне указали, что std::codecvt_utf8 deprecated, но я не понял, чем он заменяется в промежутке между с++17 и с++26?
0
|
|||
| 15.11.2025, 16:36 [ТС] | ||||||||
|
Не по теме:
![]() И рассуждаете как-то.. "А, так тут QString? Ну значит QStringView!". Да не знает человек (пишущий этот фрагмент) у кого какие строки. Это как std::vector, что в нем хранить? Ну вот, только что говорил "int", а теперь уже "double" - видите, задача поставлена нечетко, неконкретно
1
|
||||||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 15.11.2025, 18:30 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 16.11.2025, 12:12 | ||
|
Временный объект std::string уничтожится в конце выражения, а std_str будет содержать подвисший указатель.
0
|
||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||||||
| 16.11.2025, 12:38 | ||||||
|
DrOffset, я думал std::string_view ведет себя как константная ссылка и продлевает временный обьект.
А как тогда? так что-ли
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 16.11.2025, 12:46 | ||||
Сообщение было отмечено sdf45 как решение
РешениеПричины - здесь: https://www.open-std.org/jtc1/... 618r0.html Добавлено через 3 минуты
1
|
||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 16.11.2025, 12:49 | |
|
DrOffset, спасибо за разьяснение, буду знать на будущее.
0
|
|
| 16.11.2025, 12:49 | |
|
Нормальная, современная книга по C++ с ООП уклоном А.Александреску - Современное проектирование на C++ Современный интерфейс в C++ Builder / C++ Builder Каков современный подход для работы со строками Концепция ООП и их использование в современных языках программирования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
Сразу отвечу: А в PvP с ним. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|