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

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

Войти
Регистрация
Восстановить пароль
 
Тимкин Николай
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 63
#1

Отфильтровать данные из текстового файла, оставляя только символы цифр - C++

15.01.2014, 17:50. Просмотров 711. Ответов 12
Метки нет (Все метки)

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

Следует пропустить только число с оператором IF. Как отфильтровать символы? - C++
Следует пропустить только ЧИСЛО оператором IF. Если пользователем введен(ы) иные символ(ы)- соответственно, отсеиваем. Значит, делая...

Лишние символы при копирование текстового файла - C++
не могу понять почему при копировании текстового файла у меня вставляются в конец куча лишних символов, причем чем больше файл тем больше...

Прочитать из текстового файла символы, вычисть из их кодов 8 а затем умножить на 2 - C++
Написать программу: Прочитать из текстового файла символы, вычисть из их кодов 8 а затем умножить на 2 ((x - 8) * 2), вывести полученный...

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

Не выводятся данные из текстового файла - C++
Беру данные из блокнота, но при компиляции эти данные не выводится. В чём ошибка не могу понять.ПОдсажите пожалуйста. #include"stdafx.h" ...

Считать из текстового файла только определенные строки - C++
считать из текстового файла например строки с 6 по 9, или с 3 по 19 и записать их в другой текстовый файл

12
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.01.2014, 14:08 #2
Что значит: "фильтрует"? Что значит: "оставляет"? При выводе выводит только символы цифр? Файл переписывает, оставляя только символы цифр?
0
Тимкин Николай
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 63
19.01.2014, 14:11  [ТС] #3
Файл не переписывает.
Просто фильтрует файл
Сперва он выводит что содержиться в файле
только после этого фильтрует и оставляет цифры не переписывая файл только оставляя на файле.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.01.2014, 14:31 #4
Цитата Сообщение от Тимкин Николай Посмотреть сообщение
только после этого фильтрует и оставляет цифры
Где фильтрует? И опишите, как вы представляете процесс фильтрации.
0
R1987
13 / 13 / 2
Регистрация: 09.12.2012
Сообщений: 63
19.01.2014, 14:31 #5
Тимкин Николай, так что ли?
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main () {
  int length;
  char * buffer;
 
  ifstream is;
  is.open ("test.txt", ios::binary );
 
  is.seekg (0, ios::end);
  length = is.tellg();
  is.seekg (0, ios::beg);
 
  // allocate memory:
  buffer = new char [length];
 
  // read data as a block:
  is.read (buffer,length);
  is.close();
 
  cout << "Original text:" << endl;
  cout.write (buffer,length);
  cout << endl;
 
 
  cout << "Digits:" << endl;
  for(int i=0; i<length; i++)
  {
    if(isdigit(buffer[i])) cout << buffer[i];
  }
  cout << endl;
 
  delete[] buffer;
  system("Pause");
  return 0;
}
1
Тимкин Николай
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 63
19.01.2014, 14:44  [ТС] #6
Да так
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.01.2014, 14:47 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <iterator>
#include <string>
#include <algorithm>
#include <functional>
 
using input = std::istreambuf_iterator<char>;
 
int main()
{
   std::ifstream ifs("D:/file.txt");
   if (!ifs.is_open())
      return 1;
   std::string buffer {input(ifs), input()};
 
   std::ofstream ofs("D:/file(only digits).txt");
 
   buffer.erase(std::remove_if(buffer.begin(), buffer.end(), std::not1(std::ref(isdigit))), buffer.end());
   ofs << buffer;
 
   return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Тимкин Николай Посмотреть сообщение
не переписывая файл только оставляя на файле
это как?
0
Тимкин Николай
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 63
19.01.2014, 14:48  [ТС] #8
не меняя содержимое в файле
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.01.2014, 14:55 #9
Цитата Сообщение от Тимкин Николай Посмотреть сообщение
Да так
Чтобы так, то не нужно буфер создавать. Он, собственно, зачем? Чтобы два раза вывести содержимое файла (во втором случае только цифры)? Можно просто два раза вывести содержимое файла (второй раз только цифры).
0
Тимкин Николай
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 63
19.01.2014, 14:57  [ТС] #10
А можешь обьяснить как это сделать??
0
R1987
13 / 13 / 2
Регистрация: 09.12.2012
Сообщений: 63
19.01.2014, 15:03 #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно просто два раза вывести содержимое файла
Вы хотите сказать что читать два раза файл более эффективно чем считать его один раз в буфер а потом работать с буфером. Можете пояснить почему так?
0
alsav22
19.01.2014, 15:42
  #12

Не по теме:

Цитата Сообщение от R1987 Посмотреть сообщение
Вы хотите сказать что читать два раза файл более эффективно чем считать его один раз в буфер а потом работать с буфером. Можете пояснить почему так?
Это палка о двух концах. Смотря какая работа с буфером. Тут работы никакой нет, просто вывод на консоль, это и прямо из файла можно сделать. Если бы файл переписывать или создавать буфер с одними цифрами, тогда да, а так... Насчёт эффективности: а память под буфер занимать?

1
RinKaganime
0 / 0 / 0
Регистрация: 30.01.2014
Сообщений: 3
30.01.2014, 00:22 #13
честно говоря хз
0
30.01.2014, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 00:22
Привет! Вот еще темы с ответами:

Вывод на экран данные из текстового файла - C++
Создайте текстовый файл целых чисел (значения вводятся с клавиатуры). Проанализировав в программе созданный файл, создайте еще 2 файла: ...

Считать данные текстового файла в массив - C++
Здравствуйте знатоки. Есть файл file.txt в котором содержатся числа например массив из 5 символов (сам массив не определён и чисел на...

Выбрать и упорядочить данные из текстового файла - C++
В языке С не сильна, и программа вызвала некое недоумение) Есть тестовый файл со следующими данными: 0.299 -0.410 960.20 4551.85...

Исключить из заданного текстового файла символы-разделители (пробел, символ табуляции), расположенных в середи - C++
Помогите пожалуйста исправить! Очень срочно! Исключить из заданного текстового файла символы-разделители (пробел, символ табуляции),...


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

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

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