Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40

Парсинг строки

28.03.2011, 14:43. Показов 4970. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уже почти неделю мучаюсь, не знаю, как можно раскидать в ValueListEditor строку вида:
name\Imya\srvmod\1\map\mapname\sv_hostna me\Tut.Lubaya-Strochka
что бы было, что бы в Key записалось - name, в Value - Imya, след. строчка - в Key - srvmod, в Value - 1, и т.д.
Была идея искать вхождение \ и в переменной int плюсовать значение всё время, и, типа, если число в int четное, то пишем строчку до след. \ в Key, плюсуем int, значение нечетное - пишется в value. Потом думал, как можно проще сделать, ничего в голову ни пришло.
В общем, помогите реализовать такой разбор строчки. Ну, или хотя бы направить в нужном направлении.

p.s. Есть ещё вторая строка вида: число1(пробел)число2(пробел)"строчка"(си мвол \n), которое нужно раскидать в какой-нибудь, наприемер StringGrid - первая колонка - строчка (уже без кавычек, но если AnsiString'ом делать, то там функция, которая их убирает, есть), колонка 2 - число1, третяя колонка - число2.
Но думаю, если первое сделать, то со вторым мне уже проще будет...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2011, 14:43
Ответы с готовыми решениями:

Парсинг строки
Добрый день! Подскажите как правильно расспарсить строку типа "Фамилия:Имя:Отчество" на три переменных, например string. Попытался...

Парсинг строки
Добрый день. Помогите с решением следующей задачи. На вход идет строка из 0 и 1, например, 110100011, нужно распарсить её на составляющие....

Парсинг строки
Добрый день,подскажите, почему и как исправить у меня commands.c_str() - пустое ? Вот код: char comment; ...

17
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.03.2011, 19:37
Цитата Сообщение от DizzWebS Посмотреть сообщение
Уже почти неделю мучаюсь, не знаю, как можно раскидать в ValueListEditor строку вида:
name\Imya\srvmod\1\map\mapname\sv_hostna me\Tut.Lubaya-Strochka
что бы было, что бы в Key записалось - name, в Value - Imya, след. строчка - в Key - srvmod, в Value - 1, и т.д.
Если количество подстрок и их порядок в строке неизменны, то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
AnsiString str = "name\Imya\srvmod\1\map\mapname\sv_hostname\Tut.Lubaya-Strochka";
TSringList list = new TStringList;
list->Count = 8;
list->StrictDelimiter = true;
list->Delimiter = '\';
list->DelimitedText = str;
// дальше сам - добавляешь в ValueListEditor :
ValueListEditor->Key = list->Strings[0];
ValueListEditor->Valeu = list->Strings[1];
// и т.д.
Delete list;
list = NULL;
// для пробела так же, только можно обойтись без StrictDelimiter
не проверял
1
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
28.03.2011, 19:47  [ТС]
Там количество всегда разное, в данном случае просто пример такой строчки привел. Но спасибо, буду копать в эту сторону.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.03.2011, 20:27
если количество разное, то добавляешь в цикле непарные и парные
C++
1
2
3
4
int i = ИндексСтрокиСписка;
...
if (!(i%2)) //  добавляешь Value
else //  добавляешь Name
1
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
28.03.2011, 21:44  [ТС]
Воо, примерно так я и хотел. Огромное спасибо, в ближайшие дни буду пробовать
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.03.2011, 21:46
в ближайшие дни буду пробовать
ага, я помню, счет у тебя идет неделями
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
29.03.2011, 18:11  [ТС]
хех) Верно подмечено) Просто прогу делаю для себя, "для души", и особо не тороплюсь))
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
07.04.2011, 12:14  [ТС]
новая задача этой же серии - узнал, что в ValueListEditor текст заносится так: ValueListEditor1->Strings->Add("EtoKey=EtoValue");
(интересная статья по теме). Как мне разбить текст в этом случае?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
07.04.2011, 23:03
это если руками или из файла, в вашем варианте заносите по отдельности, в той статье, к стати, об этом есть, не обратили внимания ? или формируйте себе из тех строк файл с key=value
1
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
08.04.2011, 09:24  [ТС]
А точно) Сразу то обратил внимание, но не понял, как этим можно воспользоваться. Кстати код выше с разбиением ' \ ' у меня что-то не воркает. Ну это ладно, я особо пока не разбирался еще с ним, так, навскидку быстренько делал.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.04.2011, 14:25
Если версия Билдера 6, то
C++
1
list->StrictDelimiter = true;
работать не будет.
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
08.04.2011, 19:23  [ТС]
билдер десятка
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.04.2011, 01:05
хоть как-нибудь ругается ?
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
09.04.2011, 20:49  [ТС]
во, поставил как delimeter не '\' а '\\' и он заработал. Ща буду дальше разбираться)

Добавлено через 2 часа 14 минут
с этой строкой разобрался) Теперь буду разбираться со строкой вида
фраги пинг "ник", что бы в таблицу заносилось так: ник фраги пинг
0
5 / 5 / 1
Регистрация: 13.03.2011
Сообщений: 30
09.04.2011, 21:59
а что если сделать просто:
C++
1
2
3
4
5
6
int Fragi;
int Ping;
String Nik;
file>>Fragi;
file>>Ping;
file>>Nik
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
11.04.2011, 14:21  [ТС]
во-первых - не работаю с потоком, во вторых - исходя из вашего примера что в итоге получится? по-моему ничего.
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
17.04.2011, 07:38  [ТС]
Забыл вчера отписаться - всё получилось сделать. Кому интересно будет решение, отпишитесь, скину этот быдлокод))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.04.2011, 14:42
давай
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2011, 14:42
Помогаю со студенческими работами здесь

парсинг строки
Добрый день. Стоит задача - "найти производную многочлена. Многочлен может быть большой, но только с неотрицательными целыми степенями и...

Парсинг строки С++
Ребят,нигде не нашел ничего дельного,прошу,чтобы натолкнули на мысль или объяснили что,да как. В общем на вход,к примеру,поступает строка...

Парсинг строки
Доброе время суток! столкнулся с такой проблемой что странно отрекаются данные из строки bool LoadTypeFiles() { ...

Парсинг числа из строки
Здравствуйте, подскажите, пожалуйста, как перевести в число 0x899f6e5eb80e66f1f5bbe24514a7b528 в double? пытаюсь: QString t =...

Парсинг строки по пробелам
Делаю консоль. Написал парсер команд: string command = {""}; int i = 0; while(i < 5){ command = ""; i++;} При этом команда по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru