Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Crydok
1 / 1 / 1
Регистрация: 16.12.2013
Сообщений: 27
1

Распарсить файл для извлечения дат из текста

07.05.2014, 08:55. Просмотров 844. Ответов 2
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста, написать программу. Дан текстовый файл input.txt, состоящий из большого числа строк(примерно 2000), каждая из которых начинается с даты в формате ДД.ММ.ГГГГ (25.02.2002). Нужно считать из каждой строки только дату, т.е 10 первых символов. И вывести в файл output.txt
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 08:55
Ответы с готовыми решениями:

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

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

Распарсить файл 3Dmax
Всем привет. В 3DMax есть возможность сохранять модели в формате obj это...

Распарсить текстовый файл
Здравствуйте. Есть следующий файл, в который таким образом записана информация...

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

2
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
07.05.2014, 09:49 2
Лучший ответ Сообщение было отмечено Crydok как решение

Решение

Должно работать в таком виде:
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
#include<fstream>
#include<iostream>
#include<string>
#include<vector>
#include<limits>
int main() {
    const int FILE_SIZE = 2000;
    const int DATA_SIZE = 10;
    char temp[DATA_SIZE + 1];
 
    std::ifstream inputfile("input.txt");
    std::vector<std::string> vect;
    vect.reserve( 2 * FILE_SIZE);
    while(inputfile.good()) {
        inputfile.getline(temp, DATA_SIZE + 1);
        vect.push_back(temp);
        inputfile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    inputfile.close();
 
    std::vector<std::string>::iterator iter = vect.begin();
    std::ofstream outputfile("output.txt");
    while(iter != vect.end())
        outputfile << *iter++ << std::endl;
 
    outputfile.close();
 
    return 0;
}
Однако почему-то у меня программа никак не реагирует на разделители строк. Никак не пойму в чем дело
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.05.2014, 11:55 3
Еще такой вариант с бустом:
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
#include <iostream>
#include <fstream>
#include <locale>
#include <limits>
#include <boost/date_time/gregorian/gregorian.hpp>
 
namespace gr = boost::gregorian;
 
int main()
{
   std::ifstream ifs("file.txt");
   if (ifs.is_open()) {
      gr::date_input_facet* inp_facet = new gr::date_input_facet("%d.%m.%Y");
      gr::date_facet* out_facet = new gr::date_facet("%d.%m.%Y");
      std::ofstream ofs("Results.txt");
      ofs.imbue(std::locale(ifs.getloc(), out_facet));
      ifs.imbue(std::locale(ifs.getloc(), inp_facet));
 
      gr::date dt;
      while (!ifs.eof()) {
         ifs >> dt;
         if (ifs.fail()) ifs.clear();
         else ofs << dt << "\n";
         ifs.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
      }
   }
   else
      std::cerr << "Error opening file.\n";
 
   return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 11:55

Как распарсить djvu файл
Хочу сделать просмотрщик djvu файлов под macOS с использованием Qt. Ткните, в...

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

Как правильно распарсить xml-файл?
Не могу понять, какие нужно вставить регулярные выражения, все время происходит...


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

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

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