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

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

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

Текстовые файлы - C++

17.08.2015, 10:12. Просмотров 268. Ответов 7
Метки нет (Все метки)

Текстовый файл состоит из нескольких строк. Записать во второй файл последние символы из каждой строки первого файла. Как это решить? Помогите, пожалуйста.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2015, 10:12     Текстовые файлы
Посмотрите здесь:

C++ Текстовые файлы
C++ Текстовые файлы в C++
C++ Текстовые файлы
C++ Текстовые файлы
C++ Текстовые файлы
Текстовые файлы. C++
C++ Текстовые файлы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
17.08.2015, 10:17     Текстовые файлы #2
Читаете первый файл (fin) построчно в символьный массив char txt[256];fin.getline(txt,256);
Узнаете длину строки n=strlen(txt);
Записываете в выходной файл (fout) последний символ fout<<txt[n-1];
EgorVans
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34
17.08.2015, 10:19  [ТС]     Текстовые файлы #3
zss, я ничего не понимаю. Вроде делать надо как то через fstream
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
17.08.2015, 10:52     Текстовые файлы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Что же тут непонятного?
C++
1
2
3
4
5
6
ifstrean fin("filein.txt");
ofstream fout("fileout.txt");
char txt[256];
while(fin.getline(txt,256) )
  fout<<txt[strlen(txt)-1];
fout(close);
EgorVans
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34
17.08.2015, 11:04  [ТС]     Текстовые файлы #5
zss, а вот это правильно?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#include <string>
 
int main()
{
    std::ifstream ifs("input.txt");
    if (!ifs) return 1;
    std::ofstream o("output.txt");
    std::string str;
    while(std::getline(ifs, str) && o << *str.rbegin());
}
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
17.08.2015, 11:13     Текстовые файлы #6
Если Вы понимаете, что такое STL контейнеры и итераторы, то подойдет.
Только реверсивный итератор разыменовали неправильно (* более приоритетная операция, чем . ):
C++
1
2
while(std::getline(ifs, str) && o << *(str.rbegin()) )
   ; // обязательно указывайте комментарий, что пустой оператор поставлен сознательно
З.ы. И не используйте букву o для идентификаторов.
nmcf
4473 / 3811 / 1287
Регистрация: 14.04.2014
Сообщений: 14,965
17.08.2015, 11:15     Текстовые файлы #7
А зачем o << *str.rbegin() в условие вставлено, почему не в самом цикле?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2015, 11:16     Текстовые файлы
Еще ссылки по теме:

C++ Текстовые файлы
Текстовые файлы C++
C++ Текстовые файлы
C++ Текстовые файлы с++
Текстовые файлы с++ C++

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
17.08.2015, 11:16     Текстовые файлы #8
Цитата Сообщение от EgorVans Посмотреть сообщение
а вот это правильно?
Не совсем. Во-первых, вместо
Цитата Сообщение от EgorVans Посмотреть сообщение
*str.rbegin()
можно str.back() использовать, а, во-вторых, строку надо проверять на пустоту, иначе на пустой строке программа хряпнется.
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 <iterator>
#include <fstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    std::ifstream   ifile("i.txt");
    std::ofstream   ofile("o.txt");
    if( !ifile )
    {
        std::cout   <<  "Невозможно прочитать файл."
                    <<  std::endl;
    }
    else
    {
        T_str   s;
 
        while   (
                    getline (
                                ifile,
                                s
                            )
                )
        {
            if  (
                    !s.empty()
                )
            {
                ofile   <<  s.back();
            }
        }//while
    }//else
 
    system("pause");
}
Yandex
Объявления
17.08.2015, 11:16     Текстовые файлы
Ответ Создать тему
Опции темы

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