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

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

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

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

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

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

Распарсить текстовый файл - C++
Программно я могу получить список следующего вида: ..., { id: 7, login: 'idaspin', password:...

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл - C++
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый...

Текстовый файл UTF-8 сохранить как текстовый файл ANSI - C++
Есть текстовый файл в UTF-8 Нужно рядом сохранить его же, но в ANSI Как сделать это средствами c++? Среда Visual Studio 2010 ...

Распарсить тексовый файл и вывести неодходимые значения в другой файл - C++
Добрый день. Мне нужно распарсить тексовый файл и вывести неодходимые значения в другой файл. 1ый файл вида: ...

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Распарсить xlsx-файл - C++
Добрый день. Мне нужна ваша помощь Помогите мне написать программу. Суть программы вот в чём. Нужно написать консольное приложение...

5
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
04.04.2016, 22:09  [ТС] #2
Ещё актуально.
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
04.04.2016, 22:29 #3
Цитата Сообщение от Truex Посмотреть сообщение
Ещё актуально.
А какие у вас возникли сложности? Что именно не получается?
0
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-
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
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);
}
Возвращаемся в начало.
Общая идея такова, но легче это сделать на скриптах.
1
Truex
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 4
05.04.2016, 20:54  [ТС] #6
avgoor, спасибо большое. Попробую разобраться.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2016, 20:54
Привет! Вот еще темы с ответами:

Распарсить файл 3Dmax - C++
Всем привет. В 3DMax есть возможность сохранять модели в формате obj это тоже самое что и txt. Вот пример элементарного объекта с...

Файл: Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы... - C++
Создать текстовый файл. Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы, а нечетные с...

Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым - C++
Добрый день, помогите пожалуйста сделать вот такую программу. Даны натуральное k , символьный файл f и текстовый файл f1 . Файл f...

Можно ли распарсить XLS файл? - C++
Всем добрый день хотел задать вопрос, можно ли распарсить XLS файл средствами C++? Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
05.04.2016, 20:54
Ответ Создать тему
Опции темы

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