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

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

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

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

06.07.2012, 21:04. Просмотров 3411. Ответов 21
Метки нет (Все метки)

Вот открываю через FILE*, файл ввида

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

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

вот как код написать я незнаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 21:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг файла (C++):

Парсинг файла - C++
Загружаю файл в string, строка в файле только одна, так что масив ненужен. В чем задача стоит? Содержимое файла такое: {"параметр_1":...

Парсинг файла .cnf - C++
Доброго времени суток, уважаемые форумчане. Помогите, пожалуйста, конкретным кодом к вот такой подзадаче: нужно прочитать .cnf файл -...

Парсинг строк из файла - C++
Имеется файл с содержанием 3 Text Text2 Text3

Парсинг текстового файла в map - C++
Здравствуйте! Подскажите, пожалуйста, как парсить текстовый файл в map. Например, есть файл, в котором записано следующее: 1 a 2 b 3...

Парсинг файла игнорирует числа - C++
Всем добрый день. Пытаюсь прочитать данные из файла 3D модели в формате OBJ. bool L_ObjData::LoadFromFile(string FileName) { ...

Парсинг из файла и суммирование столбца - C++
В файле "data.txt" записаны 2 столбца чисел. Написать функцию, которая находит сумму чисеол во 2 столбце. (столбцы разделены ' ') Заранее...

21
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,948
Записей в блоге: 17
06.07.2012, 22:12 #16
1. Открой файл для чтения
2. Считай данные ( в масив строк к примеру)
3. Обработай данные.
4. Закрой файл и открой его заного, но уже для записи.
5. Запиши данные в этот файл.
0
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
06.07.2012, 22:12  [ТС] #17
Цитата Сообщение от ValeryS Посмотреть сообщение
создай другой файл
прочитай из первого что нужно
запиши в другой
первый удали
второй переименуй
так чтобы прочитать то что мне нужно из первого файла мне надо спарсить этот текст, а дальше сам
0
ValeryS
Модератор
6676 / 5085 / 475
Регистрация: 14.02.2011
Сообщений: 17,061
06.07.2012, 22:17 #18
Цитата Сообщение от _or_75 Посмотреть сообщение
так чтобы прочитать то что мне нужно из первого файла
читаешь первую строку (отбрасываем)
читаем вторую записываем во второй файл
читаем что не нужно отбрасываем что нужно записываем
или ты из файла читать не умеешь???
0
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
06.07.2012, 22:22  [ТС] #19
Цитата Сообщение от ValeryS Посмотреть сообщение
читаешь первую строку (отбрасываем)
читаем вторую записываем во второй файл
читаем что не нужно отбрасываем что нужно записываем
или ты из файла читать не умеешь???
открывать умею но читать нет, ну про fgets че то помню
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,948
Записей в блоге: 17
06.07.2012, 22:24 #20
А что тут можно посоветывать? Читайте книги учитесь...Писать за других программу занятие деструктивное.
0
Петррр
5965 / 3402 / 337
Регистрация: 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;
}
0
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
06.07.2012, 22:32  [ТС] #22
Цитата Сообщение от Avazart Посмотреть сообщение
А что тут можно посоветывать? Читайте книги учитесь...Писать за других программу занятие деструктивное.
ладно разберусь
0
06.07.2012, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 22:32
Привет! Вот еще темы с ответами:

typdef struct + парсинг из файла - C++
Собственно такая задача : Надо создать структуру, на основе чтения из файла. От вас готового когда не прошу, если можно - просты ссылки...

Считывание и парсинг данных с текстового файла - C++
Как правильно считать такую строку с етого файла? 3 circle 3.0 3.0 5.0 square 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 triangle 3.0 3.0 0.0...

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

Парсинг файла / общие советы / проектирование - C++
Здравствуйте, товарищи! Необходимо &quot;пропарсить&quot; файл, имеющий расширение doc. Файл большой, более 32к страниц (акцентирую на этом...


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

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

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