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

Файловые потоки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
20.03.2011, 22:25     Файловые потоки #1
1 задача) Дан текстовый файл. Напечатать все строки, в которых имеется хотя бы один пробел.
2 задача) Дан файл f, элементами которого являются символы. Переписать в файл g все цифры файла f, а в файл h - все остальные символы файла f.

Если у кого нибудь найдется лишняя минутка, уделите пожалуйста, буду признателен! Не сочтите за наглость.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
20.03.2011, 22:38     Файловые потоки #2
Цитата Сообщение от Shato Посмотреть сообщение
1 задача) Дан текстовый файл. Напечатать все строки, в которых имеется хотя бы один пробел.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <fstream>
 
int main(){
  std::ifstream f_in("INPUT.TXT");
  while(!f_in.eof()){
    std::string buf;
    getline(f_in, buf);
    if( std::count(buf.begin(), buf.end(), ' ') )
      std::cout << buf << '\n';
  }
  return 0;
}
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
20.03.2011, 22:55  [ТС]     Файловые потоки #3
Спасибо большое! И вторую задачку сделайте пожалуйста, если не сложно!
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
20.03.2011, 23:20     Файловые потоки #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <string>
#include <iterator>
 
int main()
    {
    std::ifstream inf("f");
    std::ofstream out_1("g"), out_2("h");
 
    std::string conts((std::istream_iterator<char>(inf)),std::istream_iterator<char>());
 
    for(std::string::iterator i = conts.begin();  i != conts.end(); ++i)
        if(isdigit(*i))
            out_1 << *i;
        else
            out_2 << *i;
 
    out_1.close();
    out_2.close();
    }
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
20.03.2011, 23:33  [ТС]     Файловые потоки #5
Извините за тупые вопросы. Что такое iterator и можно ли написать эту же программу без его использования?
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
20.03.2011, 23:35     Файловые потоки #6
Цитата Сообщение от Shato Посмотреть сообщение
Что такое iterator
http://www.cplusplus.com/reference/std/iterator/
Цитата Сообщение от Shato Посмотреть сообщение
и можно ли написать эту же программу без его использования?
Да можно.
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
20.03.2011, 23:47  [ТС]     Файловые потоки #7
Без использования итератора можете сделать? Если не сложно.
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.03.2011, 00:00     Файловые потоки #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <string>
#include <iterator>
 
int main()
        {
        std::ifstream inf("f");
        std::ofstream out_1("g"), out_2("h");
 
        std::string conts((std::istream_iterator<char>(inf)),std::istream_iterator<char>());
 
        for(size_t i = 0;  i < conts.size(); ++i)
                if(isdigit(conts[i]))
                        out_1 << conts[i];
                else
                        out_2 << conts[i];
 
        out_1.close();
        out_2.close();
        }
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,886
21.03.2011, 00:16     Файловые потоки #9
1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
   std::ifstream inFile("input.txt");
   std::string s;
 
   while( !inFile.eof() )
   {
      std::getline(inFile, s);
      if(s.find(' ') != std::string::npos)
     std::cout << s << '\n';
   }
 
   inFile.close();
   
   return 0;
}
2.
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
#include <fstream>
#include <cctype>
 
int main()
{
   std::ifstream inFile("f");
   std::ofstream outFile1("g");
   std::ofstream outFile2("h");   
 
   char ch;
   while( inFile.get(ch) )
   {      
      if( isdigit(ch) )
     outFile1.put(ch);
      else
     outFile2.put(ch);
   }
 
   inFile.close();
   outFile1.close();
   outFile2.close();
 
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2011, 10:40     Файловые потоки
Еще ссылки по теме:

файловые потоки C++
Файловые указатели. Потоки C++
Файловые потоки C++
C++ Файловые потоки в Си и С++
Хранение ссылок на файловые потоки C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.03.2011, 10:40     Файловые потоки #10
Цитата Сообщение от rangerx
C++
1
while( !inFile.eof() )
бесконечный цикл при ошибке чтения

C++
1
while (std::getline(inFile, s))
Yandex
Объявления
21.03.2011, 10:40     Файловые потоки
Ответ Создать тему
Опции темы

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