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

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

25.08.2011, 14:35. Показов 14445. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru