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

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

Восстановить пароль Регистрация
 
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
16.01.2014, 02:59     Написать функцию для парсинга всех 3 строк #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].
Или все же такой способ тоже нормальный?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 02:59     Написать функцию для парсинга всех 3 строк
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
16.01.2014, 04:54     Написать функцию для парсинга всех 3 строк #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();
}
Yandex
Объявления
16.01.2014, 04:54     Написать функцию для парсинга всех 3 строк
Ответ Создать тему
Опции темы

Текущее время: 09:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru