Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/74: Рейтинг темы: голосов - 74, средняя оценка - 4.91
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

Вывод содержимого текстового файла на экран

25.08.2011, 14:35. Показов 14327. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать программу чтоб выводила содержимое текстового файла на экран, желательно по строчно после каждого нажатия ентер, ну или хотя бы чтоб просто выводило,кто поможет заранее благодарен, особенно если будут комментрии в программе с пояснением.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma argsused
# include <iostream>              // класс для работы с вводом-выводом
# include <fstream>
#include <conio.h>        // класс для работы с файлом
# include <string>            // класс для работы со строками
//-------------------Код программы для первой задачи----------
void main()
{
    using namespace std;
    string st,stt;
    cout << "enter name files:" <<endl;
    char name[10];
    cin >> name;
    ifstream inf(name);
    getline(inf,st);
    int i = 0, f = 1;
    for(i=0; i < st.length(); i++)
            stt +=st[i];
    cout << stt;
    getch ();
вот так получилось но считывает только первую строку нижние дальше не выводит как дописать надо чтоб все выводило строки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2011, 14:35
Ответы с готовыми решениями:

Функция: вывод содержимого текстового файла на экран
Привет всем!На уроке проходили тему &quot;ИСПОЛЬЗОВАНИЕ ФАЙЛОВОЙ СИСТЕМЫ&quot;,я чото неразобрал что идет к чему . 1.Написать функцию вывода...

Вывод на экран содержимого файла
Напишите программу, которая выводит на экран содержимое файла A:\numbers.txt. За ранние спасибо!

Вывод содержимого файла на экран
С помощью подсказок и своего немного труда создал программу. Но последние условие выполняется не правильно. Выводится не содержимое файла,...

21
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2011, 14:54
Цитата Сообщение от lexflax Посмотреть сообщение
Нужно написать программу чтоб выводила содержимое текстового файла на экран
Доработал твой код
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 <conio.h>   // êëàññ äëÿ ðàáîòû ñ ôàéëîì
# include <string>   // êëàññ äëÿ ðàáîòû ñî ñòðîêàìè
//-------------------Êîä ïðîãðàììû äëÿ ïåðâîé çàäà÷è----------
void main()
{
    using namespace std;
    string st,stt;
    cout << "enter name files: ";
    char name[10];
    cin >> name;
    ifstream inf(name);
    int i = 0;
    while(!inf.eof())
    {
        getline(inf,st);
        for(i=0; i < st.length(); i++)
            stt +=st[i];
        cout << st <<"\r\n";
        getch ();
    }
}
Добавлено через 1 минуту
Весь твой недочёт был, что читал из файла лишь 1-раз
Цитата Сообщение от lexflax Посмотреть сообщение
ifstream inf(name);
getline(inf,st);
а нужно в цикле чиать до конца файла

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(!inf.eof())
* * * * {
* * * * * * * * getline(inf,st);
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.08.2011, 14:54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::ifstream inf("1.txt");
    std::string str;
    while (inf.eof() == false)
    {
        std::getline(inf, str);
        std::cout << str;
        std::getchar();
    }
 
    return 0;
}
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.08.2011, 14:57
C++
1
std::cout << std::fstream("input.txt").rdbuf();
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2011, 14:58
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
std::string str;
* * while (inf.eof() == false)
чем эта конструкция от моей отличается???

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
while(!inf.eof())
* * * * {
* * * * * * * * getline(inf,st);
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.08.2011, 14:59
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
чем эта конструкция от моей отличается???
ничем но у вас осталось от ТС
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
# include <iostream> // класс для работы с вводом-выводом
# include <fstream>
#include <conio.h> // класс для работы с файлом
# include <string> // класс для работы со строками
//-------------------Код программы для первой задачи----------
void main()
что не есть правильно
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2011, 15:06
Цитата Сообщение от Jupiter Посмотреть сообщение
но у вас осталось от ТС
- я всего лишь код ТС доработал, в коменты не вчитывался

Цитата Сообщение от lexflax Посмотреть сообщение
#include <conio.h> // класс для работы с файлом
- lexflax, посмотри тут http://ru.wikipedia.org/wiki/Conio.h
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.08.2011, 13:11  [ТС]
while (inf.eof()) что означает eof???
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
26.08.2011, 13:18
Цитата Сообщение от lexflax Посмотреть сообщение
while (inf.eof()) что означает eof???
Это функция, которая возвращает true, если достигнут конец потока. Такое использование (в заголовке цикла while) почти всегда означает ошибку в логике программы.

Добавлено через 1 минуту
Я имею в виду и эти варианты тоже
C++
1
while (inf.eof() == false)
C++
1
while (!inf.eof())
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.08.2011, 13:21  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это функция, которая возвращает true, если достигнут конец потока. Такое использование (в заголовке цикла while) почти всегда означает ошибку в логике программы.

Добавлено через 1 минуту
Я имею в виду и эти варианты тоже
C++
1
while (inf.eof() == false)
а почему вот эти означают ошибку в логике?
C++
1
while (!inf.eof())
а почему вот эти означают ошибку в логике?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
26.08.2011, 13:23
Не обязательно означают. Но чаще всего так и есть.
Потому, что надо проверять успешность операции чтения, а не достижение конца файла. Эту функцию можно вызвать чтобы убедиться, что файл закончился, а не для завершения цикла.
1
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
26.08.2011, 13:30
grizlik78, тогда как бы вы в данном случае написали заголовок цикла while ?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.08.2011, 13:35
Цитата Сообщение от lexflax Посмотреть сообщение
а почему вот эти означают ошибку в логике?
об ошибке в какой логике ты говоришь?Функция eof возвращает 1 если достигнут конец файла и 0 если конец ещё не достигнут 1 - эквивалентна true 0 - false
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.08.2011, 13:38
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
об ошибке в какой логике ты говоришь?Функция eof возвращает 1 если достигнут конец файла и 0 если конец ещё не достигнут 1 - эквивалентна true 0 - false
конец файла может встретится раньше чем '\n'
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
26.08.2011, 13:39
Net_Wanderer, ну, например так
C++
1
while (std::getline(inf, str))
Но для строк это не так актуально, как, например, для чтения целых чисел из текстового потока.

Например, в этой программе легко получить бесконечный цикл. достаточно ввести букву.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int d;
    while (!std::cin.eof())
    {
        std::cin >> d;
        std::cout << "d = " << d << std::endl;
    }
    return 0;
}
В этой такой проблемы нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    int d;
    while ( std::cin >> d )
    {
        std::cout << "d = " << d << std::endl;
    }
    if (!std::cin.eof())
    {
        std::cout << "Input error" << std::endl;
    }
    return 0;
}
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.08.2011, 13:46
Цитата Сообщение от Jupiter Посмотреть сообщение
конец файла может встретится раньше чем '\n'
- можешь пояснить?
в reference eof написано что проверяет поток на достижение его конца, погуглив нашёл что единственный моент косой работы eof когда в текстовом режиме бинарник открываем и встречаем -1. Какое отношение к этому имеет символ перевода на другую строку не пойму...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.08.2011, 13:51
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Какое отношение к этому имеет символ перевода на другую строку не пойму...
по умолчанию getline читает до '\n' которого в строке может не быть
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 13:52
Цитата Сообщение от Jupiter Посмотреть сообщение
конец файла может встретится раньше чем '\n'
Наверное вы имели ввиду то, что если произвольных файл открыть как текстовый, то конец файла в текстовом формате (символ с кодом 26) может наступить совершенно неожиданно.
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
26.08.2011, 13:57
Цитата Сообщение от grizlik78 Посмотреть сообщение
В этой такой проблемы нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    int d;
    while ( std::cin >> d )
    {
        std::cout << "d = " << d << std::endl;
    }
    if (!std::cin.eof())
    {
        std::cout << "Input error" << std::endl;
    }
    return 0;
}
Как я понимаю, оператор >> возвращает std::cin, к которому применяется operator void*, который в свою очередь возвращает NULL только если установленны failbit или badbit, но не eofbit.
http://www.cplusplus.com/refer... or_voidpt/
Тогда почему если вводим EOF цикл завершается?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
26.08.2011, 13:58
Про текстовые файлы и чтение строк.
Пусть у нас есть текстовый файл, в котором записано 2 строки.
Вот эта программа может вывести 2 или 3 строки, в зависимости от того, заканчивается ли вторая строка символом перевода строки или нет. Если заканчивается, то будет выведена третья, пустая, строка.
C++
1
2
3
4
5
while ( !in.eof() )
{
    getline(in, str);
    cout << "line: " << str << std::endl;
}
Эта программа в обоих случаях выведет 2 строки.
C++
1
2
3
4
while ( getline(in, str) )
{
    cout << "line: " << str << std::endl;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2011, 13:58
Помогаю со студенческими работами здесь

Ввод и вывод содержимого файла на экран
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { ofstream file; file.open(&quot;file1.dat&quot;);//создал...

Чтение файла и вывод его содержимого на экран
помогите разобраться с чтением файла и выводом его содержимого на экран... а то что ни как не получается... запутался... :wall:

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

Построчный вывод текстового файла на экран
нужно организовать построчный вывод файла на экран пока остановился на данном способе, так как по крайней мере он понятен, с getline и...

Не могу разобраться. Чтение и вывод на экран всего содержимого файла .txt на консоль
#include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; using namespace std; void main() { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru