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

Парсинг файла - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
06.07.2012, 21:04     Парсинг файла #1
Вот открываю через FILE*, файл ввида

"test"
{
"test1" "test1_1"
"test2" "test2_1"
"test3" "test3_1"
"test4" "test4_1"
}

как мне взять только строку test2_1 (она все время разная),
или просто удалить первые 2 строки, потом 1 строку оставить а остальные удалить,
и затем удалить все до 3-его символа " , а далее удалить последний символ

вот как код написать я незнаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 21:04     Парсинг файла
Посмотрите здесь:

C++ Парсинг
C++ Парсинг файла игнорирует числа
C++ Парсинг строк из файла
C++ Парсинг файла
typdef struct + парсинг из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
06.07.2012, 22:30     Парсинг файла #21
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <map>
#include <cctype>
 
void trim(std::string& str)
{
    while (isspace(*str.begin()))
        str.erase(0, 1);
    size_t i = str.size() - 1;
    while (isspace(str[i]) && str.size() > 0)
            str.erase(i--, 1);
}
 
void trim_ch(std::string& str, char ch)
{
    while (*str.begin() == ch)
        str.erase(0, 1);
    size_t i = str.size() - 1;
    while (str[i] == ch && str.size() > 0)
            str.erase(i--, 1);
}
 
int main()
{
    std::ifstream in("E:\\Temp\\obj.txt");
    std::vector<std::string> obj;
    std::string buf;
    while (std::getline(in, buf, '\n'))
        obj.push_back(buf);
    /* Удаление заголовка и открывающей скобки */
    in.close();
    std::for_each(obj.begin(), obj.end(), trim);
    std::vector<std::string>::iterator it = std::find(obj.begin(), obj.end(), "{");
    it++;
    if (it != obj.end())
        obj.erase(obj.begin(), it);
 
    /* Удаление закрывающей скобки */
    it = std::find(obj.begin(), obj.end(), "}");
    if (it != obj.end())
        obj.erase(it, obj.end());
 
    size_t kpCount = obj.size();
    std::map<std::string, std::string> map;
    for(int i = 0; i < kpCount; i++)
    {
        buf = obj[i];
        int pos = buf.find(' ');
        if (pos != std::string::npos)
        {
            int space_pos = buf.find(' ');
            if (space_pos != std::string::npos)
            {
                std::string key = buf.substr(0, space_pos);
                std::string value = buf.substr(space_pos, buf.size() - space_pos - 1);
                trim(key);
                trim_ch(key, '"');
                trim(value);
                trim_ch(value, '"');
                map[key] = value;
            }
        }
    }
 
    /* Вывод */
    std::map<std::string, std::string>::iterator it_map = map.begin();
    for(; it_map != map.end(); ++it_map)
        std::cout << it_map->first << ": " << it_map->second << std::endl;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 22:32     Парсинг файла
Еще ссылки по теме:

Парсинг из файла и суммирование столбца C++
C++ Парсинг файла .cnf
C++ Парсинг

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

Или воспользуйтесь поиском по форуму:
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
06.07.2012, 22:32  [ТС]     Парсинг файла #22
Цитата Сообщение от Avazart Посмотреть сообщение
А что тут можно посоветывать? Читайте книги учитесь...Писать за других программу занятие деструктивное.
ладно разберусь
Yandex
Объявления
06.07.2012, 22:32     Парсинг файла
Ответ Создать тему
Опции темы

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