Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
compl
1 / 1 / 4
Регистрация: 23.10.2012
Сообщений: 70
#1

Парсинг строки - C++

20.09.2014, 15:31. Просмотров 754. Ответов 5
Метки нет (Все метки)

Добрый день. Помогите с решением следующей задачи. На вход идет строка из 0 и 1, например, 110100011, нужно распарсить её на составляющие. Например, первые 2 цифры - это одна из 4 команд (00 - команда А, 01 - В, 10 - С, 11 - D). Потом 3 цифры, это одна из 5 команд (001, 111, 110, 010, 100). И так далее. Таким образом, нужно определить, какие команды закодированы в строке. Вопрос: каким образом это можно реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2014, 15:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Парсинг строки (C++):

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

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

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

Парсинг строки
Доброе время суток! столкнулся с такой проблемой что странно отрекаются...

Парсинг строки с сайта
привет всем есть сайт и надо с сайта спарсить строчку <p...

Быстрый парсинг строки
Всем доброго времени суток... Прошу разъяснить что делаю не так. Получаю...

5
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
20.09.2014, 16:29 #2
Считать 2 цифры, выбрать соответствующую команду (можно даже в лоб через switch-case как целое число рассматривать), считать 3 и т.д.
1
ValeryS
Модератор
7134 / 5402 / 669
Регистрация: 14.02.2011
Сообщений: 18,225
20.09.2014, 16:34 #3
Цитата Сообщение от compl Посмотреть сообщение
И так далее.
и так далее что?
команды повторяются?
тогда вот такая структура
C++
1
2
3
4
5
struct commands
{
 char command1[2];
  char command2[3];
}
или дальше идет 4 символа, 5 .......
когда конец?
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
20.09.2014, 17:52 #4
Могу ещё вот что предположить
C++
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
44
45
46
47
48
49
50
#include <cstdlib>
#include <iostream>
#include <functional>
 
void printA()
{
    std::cout << 'A';
}
 
void printB()
{
    std::cout << 'B';
}
 
void printC()
{
    std::cout << 'C';
}
 
void printD()
{
    std::cout << 'D';
}
 
void printE()
{
    std::cout << 'E';
}
 
void printF()
{
    std::cout << 'F';
}
 
int main()
{
    const std::string str = "110100011";
    std::function<void()> handlers[] = {printA, printB, printC, printD, printE, printF};
    const int length = str.length(), handlersSize = sizeof(handlers) / sizeof(*handlers);
    
    int beg = 0, step = 2;
    while (beg + step <= length)
    {
        const long x = strtoll(str.substr(beg, step).c_str(), NULL, 2);
        beg += step;
        step++;
        if (x < handlersSize)
            handlers[x]();
    }
}
0
inst_mefi
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
20.09.2014, 19:12 #5
compl, если не слишком длинное число, можно воспринимать просто как обычное целое число. Разделять разряды целочисленным делением.
Второе вариант, читаешь в строку, делишь строку в соответствии с тем, как у тебя там команды расположены. А там уже выясняешь, какая команда в каждой подстроке.
0
gazlan
3139 / 1915 / 311
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
20.09.2014, 22:17 #6
Цитата Сообщение от compl Посмотреть сообщение
каким образом это можно реализовать?
Битовый сдвиг и таблицы решений. MrGluck в #2 уже дал хороший совет.
0
20.09.2014, 22:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2014, 22:17
Привет! Вот еще темы с решениями:

Парсинг чисел из строки
Подскажите пожалуйста функцию, которая моглабы парсить из строки. Ну что-то на...

Парсинг строки с пробелами
Вообщем на выходе всего я получаю вот это : Вот сам файл script.csx: ...

Парсинг строки по пробелам
Делаю консоль. Написал парсер команд: string command = {&quot;&quot;}; int i = 0;...

Парсинг опций командной строки
Всем привет) Пишу приложение при помощи Qt. Хочу внедрить поддержку...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru