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

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

Войти
Регистрация
Восстановить пароль
 
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
#1

Распарсить текстовый файл - C++

02.04.2016, 16:28. Просмотров 225. Ответов 5
Метки нет (Все метки)

Здравствуйте. Есть следующий файл, в который таким образом записана информация (приложение). Он состоит из множества блоков. В каждом блоке указывается к какой частице он относится (Particle). Нужно сделать так, чтобы если Particle = e-, то он считывал столбец энергий KinE (MeV), а если частица другая, то не считывал и шёл дальше (и так до конца файла). Мне кажется, что это можно как то сделать с помощью fscanf. Спасибо.
Миниатюры
Распарсить текстовый файл  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2016, 16:28     Распарсить текстовый файл
Посмотрите здесь:

Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым C++
Можно ли распарсить XLS файл? C++
C++ Распарсить файл 3Dmax
C++ Распарсить файл для извлечения дат из текста
C++ Распарсить текстовый файл
C++ Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов
Распарсить тексовый файл и вывести неодходимые значения в другой файл C++
C++ Распарсить xlsx-файл
C++ Распарсить файл с номерами телефонов и именами абонентов
C++ Как правильно распарсить xml-файл?
C++ Как распарсить djvu файл

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
04.04.2016, 22:09  [ТС]     Распарсить текстовый файл #2
Ещё актуально.
avgoor
879 / 514 / 111
Регистрация: 05.12.2015
Сообщений: 1,455
04.04.2016, 22:29     Распарсить текстовый файл #3
Цитата Сообщение от Truex Посмотреть сообщение
Ещё актуально.
А какие у вас возникли сложности? Что именно не получается?
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
04.04.2016, 22:48  [ТС]     Распарсить текстовый файл #4
avgoor,
Я знаю как работать, если бы это было всё у меня в одной таблице. Тогда если бы там был столбец Particle, то я написал бы что нибудь вроде
C++
1
2
3
4
5
6
7
8
9
  while (1) {
 ncols = fscanf(infile, "%s %f %f %f %f %f\n",&id, &x, &y, &z, &KE, &dE);
 if (ncols<0) break;
 
if (Particle == e-) 
{
 
Hist->Fill(dE); //тут я заполняю гистограмму, с которой работаю
}
В итоге весь цикл бы дошёл у меня до конца файла, и так, мне кажется, я бы получил, что мне надо. Однако тут информация представлена таким образом, и я не могу понять, как можно мне сделать так, чтобы он доходя до звёздочек, проверял именно Particle на истинность, и если это e-, то шёл дальше и считывал таблицу, а если нет, то как то пропускал её и переходил к следующему блоку.

Добавлено через 4 минуты

Цитата Сообщение от avgoor Посмотреть сообщение
А какие у вас возникли сложности? Что именно не получается?
Да, только в условии if, конечно id == e-
avgoor
879 / 514 / 111
Регистрация: 05.12.2015
Сообщений: 1,455
05.04.2016, 00:24     Распарсить текстовый файл #5
Truex, Считываете текст построчно, сравниваете каждую считаную строку с необходимой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
do {
    std::string str;
    std::getline(file, str);
} while(str.substr(0,<лень_считать>)!="* G4TRak...partikle=e-");
 
 
for(int i=0; i<4; i++)
    std::getline(file, str) //пропускаете нужное кол-во строк
std::istringstream ss(str)
int n;
float f;
while(ss>>n)// номер шага
{
    ss>>f>>f>>f; // cчитываем 4 столбец 
    std::getline(file, str)
    ss.str(str);
}
Возвращаемся в начало.
Общая идея такова, но легче это сделать на скриптах.
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
05.04.2016, 20:54  [ТС]     Распарсить текстовый файл #6
avgoor, спасибо большое. Попробую разобраться.
Yandex
Объявления
05.04.2016, 20:54     Распарсить текстовый файл
Ответ Создать тему
Опции темы

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