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

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

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

C++ Текстовые файлы
C++ Текстовые файлы в C++
C++ Текстовые файлы
C++ Текстовые файлы
Текстовые файлы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 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
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 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
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
17.08.2015, 11:13     Текстовые файлы #6
Если Вы понимаете, что такое STL контейнеры и итераторы, то подойдет.
Только реверсивный итератор разыменовали неправильно (* более приоритетная операция, чем . ):
C++
1
2
while(std::getline(ifs, str) && o << *(str.rbegin()) )
   ; // обязательно указывайте комментарий, что пустой оператор поставлен сознательно
З.ы. И не используйте букву o для идентификаторов.
nmcf
4299 / 3720 / 1253
Регистрация: 14.04.2014
Сообщений: 14,551
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++ текстовые файлы

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
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     Текстовые файлы
Ответ Создать тему
Опции темы

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