Разбор строки05.12.2025, 16:05. Показов 5954. Ответов 45
Метки нет (Все метки)
Добрый день
Нужно разобрать (распарсить) такую строку
Требования к разбору: юникод здесь не актуален (считаем что только латинский текст). Никакого копирования данных строки. Наверно бум юзать std::string_view, мы ведь его так любим (во всяком случае хвалим). Возможно первое что приходит в голову - использовать std::istringstream. Но ведь (я слышал) он deprecated? И как подружить его с std::string_view? Спасибо
0
|
||||||||
| 05.12.2025, 16:05 | |
|
Ответы с готовыми решениями:
45
Разбор аргументов командной строки Разбор строки Разбор строки из консоли и вопрос по g++ |
|
6189 / 2891 / 1042
Регистрация: 01.06.2021
Сообщений: 10,607
|
||||||
| 05.12.2025, 20:07 | ||||||
|
Igor3D, я нашел в инете парсер для obj файлов и если копаться в реализации, то там все держится на одной функции, которая разбивает строку.
2
|
||||||
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,058
|
|||||||
| 05.12.2025, 21:19 | |||||||
|
Но в данном случае неэффективен из-за того, что будет дополнительная копия исходной строки. в общем, если я идею правильно понял, то у меня вот так получилось https://onlinegdb.com/IMH5LdkaIA
face0
2
|
|||||||
|
Модератор
|
||
| 05.12.2025, 22:39 | ||
|
0
|
||
|
6189 / 2891 / 1042
Регистрация: 01.06.2021
Сообщений: 10,607
|
|
| 06.12.2025, 01:38 | |
|
alecss131, obj простенький формат, засунуть туда много чего нельзя. Грубо говоря, он подходит только для хранения меша и его uv и нормалей. Даже материалы нельзя засунуть. Дело в том, что внутри obj можно засунуть только ссылку на mtl файл (это формат-компаньон), который в свою очередь может хранить только банальные свойства материалов, а всякие текстуры засунуть не получится, тоже придется по ссылке. Mtl вообще устарел.
Единственное преимущество obj/mtl это то, что это открытый формат. Наверняка ты предпочитаешь fbx. Но это проприетарный закрытый (но есть открытая реализация, полученная посредством реверс-инжиниринга) гнусный формат, хотя он популярен и активно пропагандируется всем коммерческим софтом, в том числе стандартами отрасли. Я ещё иногда использую gltf / glb. Это тоже свободный формат от Khronos Group. Мне нравится, что в него можно засунуть даже текстуры (изображения), скелеты, анимации и все прочее. Для 3д печати ещё встречал форматы 3mf, stl, ply...
0
|
|
|
Модератор
|
|||
| 06.12.2025, 15:15 | |||
|
Obj мне не нравится в первую очередь что он текстовый, будет весить больше чем бинарный, при этом теряя точность. И у него вечно непонятки с десятичными символами, то ли запятые то ли точки, вечно путаю. А еще нумерация вершин в индексах с 1. Fbx я люблю только экспортировать в него из кода, хотя читать не сложнее. Некоторые вещи у него тоже не логичны, но есть сдк готовый и меня все устраивает, некоторые вещи довольно просто делаются (например анимации). В него можно засунуть и камеры и источники освещения и даже звуки, но вот материалы он поддерживает только простейший блинн-фонг, никаких pbr, что при импорте в ue например создает некорректные материалы.
0
|
|||
|
6189 / 2891 / 1042
Регистрация: 01.06.2021
Сообщений: 10,607
|
|
| 06.12.2025, 15:29 | |
|
alecss131, честно говоря, мне не нужны библиотеки для obj и мне плевать на его размер. Я их использую в играх, и игровые движки по-своему оптимизируют меши - не так, чтобы человеку было удобно, а так, чтобы gpu кайфовал.
0
|
|
| 06.12.2025, 20:04 [ТС] | |||||||
Во-первых, такое
Несмотря на эти помарки, оба ответа содержательны и полезны, спасибо
0
|
|||||||
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,058
|
||||
| 06.12.2025, 20:43 | ||||
![]()
0
|
||||
|
Just Do It!
|
|||||||||
| 06.12.2025, 22:18 | |||||||||
|
1.
чтобы модель можно было экспортировать под любую платформу, под любой драйвер, под любую железку... аналогия: как язык Си, а не ассемблер(аналог бинарной модели). 2. мой вар простой, без изысков, то что нужно для раздела С++ для начинающих:
код бы получился более красивше, если ваще не заботиться об ошибках в тексте модели, но в минимуме я всё же позаботился. хз нужно ли? 4. далее, если сильно хотца скорости, то моно построить стенд для замера перфоманса и делать забеги со ставками на разные версии, какая у кого быстрее ... 5. и начинать вертеть системами с целью захапать сразу лям $. вот
0
|
|||||||||
| 06.12.2025, 22:37 [ТС] | |||||||
0
|
|||||||
|
Just Do It!
|
||||||||||||
| 07.12.2025, 00:18 | ||||||||||||
0
|
||||||||||||
| 07.12.2025, 04:36 [ТС] | ||||
|
Заметим что во всех случаях есть какая-то "ударная" ф-ция которая делает что нужно, и код группируется возле нее.
0
|
||||
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,058
|
||
| 07.12.2025, 08:41 | ||
|
Я ж задавал вопрос - как часто и в каком количестве это всё разбирается ? Если единожды перед запуском игры - то берём строковый поток, ждём 5 секунд и всё в шоколаде. Если нужна молотилка - это как у меня. Изменение формата не предусматривается.
0
|
||
|
Just Do It!
|
||
| 07.12.2025, 10:38 | ||
|
типа лаки-пацан от фортуны, осень хотца купить лотерейный билет. чекнуть жакпот, ходить с понтом, вальяжно так щуриться на мир - типа вот он я, везетак, прущий с самого утра типа чистая мана в кармане пахнет, но цыкотно, очкую, бро - не долюбливаю я самоуверенных кретинов - не нравятся они мне - слишком много зла уверенно они делают.
0
|
||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,966
|
|
| 07.12.2025, 12:43 | |
|
Igor3D,
Что то ни где документально не подтверждено, что вы уважаемый, эксперт по плюсам. Igor3D, Чё вас на плюсы то вдруг потянуло? Да ещё чужой код разбирать(обсирать)..
0
|
|
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,966
|
|
| 07.12.2025, 12:44 | |
|
0
|
|
|
Модератор
|
|||
| 07.12.2025, 13:19 | |||
|
Так что в плане универсальности ужаснее бинарных. [] с константным размером, но более удобная, оно по размерам и чтении/записи ничем не отличается (то есть эквивалентно int arr[3] или std::array<int, 3> arr).
0
|
|||
|
6189 / 2891 / 1042
Регистрация: 01.06.2021
Сообщений: 10,607
|
||
| 07.12.2025, 13:32 | ||
|
Вообще, не всегда бинарный формат это хорошо. Например, майкрософт раньше для документов в своем офисе использовала бинарный формат DOC. Но этот формат оказался очень уязвимым, посредством него вирусы распространяли. Поэтому они перешли на современный текстовый формат DOCX - по сути, это архив с текстовыми данными.
0
|
||
|
6189 / 2891 / 1042
Регистрация: 01.06.2021
Сообщений: 10,607
|
||
| 07.12.2025, 13:43 | ||
|
Наталья8, можешь положить видео в свою коллекцию)
0
|
||
| 07.12.2025, 13:43 | |
|
Помогаю со студенческими работами здесь
20
Разбор строки Интерпретатор выражений с переменной(разбор и анализ строки)) Консоль, разбор командной строки Разбор строки Разбор сложной строки с аргументами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|