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

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

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

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

16.01.2014, 02:59. Просмотров 275. Ответов 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++
Здравствуйте, как написать такую функцию: Есть переменная типа string: string str = &quot;58422&quot;; как написать цикл который выведет все...

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

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

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

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

Написать функцию подсчета сумм строк матрицы - C++
Написать функцию подсчета сумм строк матрицы. И проверить упорядочены ли они

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,818
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();
}
Ответ Создать тему
Опции темы

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