Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
compl
1 / 1 / 0
Регистрация: 23.10.2012
Сообщений: 70
#1

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

20.09.2014, 15:31. Просмотров 701. Ответов 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++):

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

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

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

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

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

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

5
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,592
20.09.2014, 16:29 #2
Считать 2 цифры, выбрать соответствующую команду (можно даже в лоб через switch-case как целое число рассматривать), считать 3 и т.д.
1
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,203
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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,592
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 / 5
Регистрация: 10.10.2013
Сообщений: 165
20.09.2014, 19:12 #5
compl, если не слишком длинное число, можно воспринимать просто как обычное целое число. Разделять разряды целочисленным делением.
Второе вариант, читаешь в строку, делишь строку в соответствии с тем, как у тебя там команды расположены. А там уже выясняешь, какая команда в каждой подстроке.
0
gazlan
3133 / 1909 / 285
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Парсинг значений из командной строки - C++
Всем доброго времени суток, столкнулся с необходимостью получения значений из командной строки, не просто чисел, а разделенных '/'. ...

Парсинг строки: отобрать символы кириллицы - C++
После введения с клавиатуры произвольной строки вывести на экран эту строку с отобранными у него буквами кириллицы. напишите код на...

Парсинг строки: отобрать латинские символы - C++
после введения с клавиатуры произвольной строки вывести на экран эту строку,но с отобранными из него латинскими буквами. с++ Заранее...


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

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

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