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

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

Войти
Регистрация
Восстановить пароль
 
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
#1

Написать функцию для парсинга всех 3 строк - C++

16.01.2014, 02:59. Просмотров 288. Ответов 1
Метки нет (Все метки)

Есть строка вида:

" text text1 , text2 "

Перед и после строки text или text1 и text2 может сколько угодно пробелов и символов табуляции.
Но символ " , " может быть слит со строкой text1.

Ну так вот нужно написать функцию для парсинга всех 3 строк [text,text1,text2]

Сами функции для text1 и text2 я написал но код очень громоздкий а то и быдлокод.

Кликните здесь для просмотра всего текста

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
51
char* parser::parse_cmd(char str[256]) //text
{
    int cm = 0;
    char cmd[3] = {NULL};
    bool is_world = false;
    bool is_end = false;
    for(int i = 0;i < (int)strlen(str) && !is_end;i++)
    {
        if ( str[i] != ' ' && str[i] != '\t' )
            is_world = true;
        else
            is_world = false;
        if ( is_world )
        {
            cmd[cm] = str[i];
            if ( str[i+1] == ' ' )
                is_end = true;
            else
                cm++;
            if ( is_end )
                return cmd;
        }
    }
    return NULL;
}
 
char* parser::parse_argv_one(char str[256]) // text1
{
    int cm = 0;
    int world = 0;
    char cmd[3] = {NULL};
    bool is_ses = true;
    bool is_world = false;
    bool is_end = false;
    for(int i = 0;i < (int)strlen(str);i++)
    {
        if ( str[i] != ' ' && str[i] != '\t' )
        {
            is_world = true;
            if ( is_ses )
            {world++;is_ses=false;}
            if(world==2)
            {cmd[cm] = str[i];cm++;}
        }
        else
        {is_world = false;is_ses=true;}
    }
    cmd[3] = 0x00;
    cmd[4] = 0x00;
    return cmd;
}


Хотелось написать как нибудь по другому и по оригинальней а кроме такого парсинга текста ничего не лезет в голову. :C

Вообщем нужны 3 функции для парсинга всех строк [text,text1,text2].
Или все же такой способ тоже нормальный?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 02:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию для парсинга всех 3 строк (C++):

Написать программу, использующую стандартную функцию сравнения строк для определения среди трех строк, вводимых пользователем, одинаковых. - C++
Написать программу, использующую стандартную функцию сравнения строк для определения среди трех строк, вводимых пользователем, одинаковых.

Написать функцию для генерации всех комбинаций цифр - C++
Здравствуйте, как написать такую функцию: Есть переменная типа string: string str = &quot;58422&quot;; как написать цикл который выведет все...

Написать функцию для обмена строк двумерного массива - C++
Написать функцию для обмена строк двумерного массива с ее помощью отсортировать массив по элементам третьего столбца.

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

Написать рекурсивную функцию, для определения всех делителей натурального числа - C++
помогите пожалуйста, написать рекурсивную функцию определения всех делителей натурального числа n.

Хочу написать функцию для удаления всех node у которых одинаковые значения - C++
писал вот так, но почему то не работает, то есть для начала хочу просто отображать индексы таких node, а потом подумаю на удаление. void...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
16.01.2014, 04:54 #2
Если лишь запятая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::istringstream ist(str);
    for (std::string word; ist >> word; std::cout << word << " ")
        if (word.back() == ',')
            word.pop_back();
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 04:54
Привет! Вот еще темы с ответами:

Написать функцию копирования строк - C++
Не могу решить задачу и найти в интернете. &quot;Напишите программу, которая содержит функцию копирования строк. Оригинал и копия должны...

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

Написать функцию, возвращающую сумму всех элементов массива - C++
Написать функцию которая возвращает сумму всех элементов масива (масив и размер это параметры функции)

Написать программу, реализующую функцию конкатенации k строк - C++
Заранее благодарю.


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

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

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