Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/119: Рейтинг темы: голосов - 119, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116

Объект ifstream!!!

20.05.2009, 18:58. Показов 24100. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему при попытке повторного вывода содержимого файла он не выводится????
Почему не работает эта строка: fin.open(fileName); ????
Вот код программы:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//---------------------------------------------------------------------------
#include <iostream.h>
#include <fstream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{
    char buffer[256];
    char fileName[20];
 
    cout << "Enter the file name: ";
    cin >> fileName;
 
    ofstream fout(fileName);
    cout << "\nEnter text: ";
    cin.ignore(1,'\1');
    cin.getline(buffer,256);
    fout << buffer << "\n";
    fout.close();
 
    ifstream fin(fileName);
    //ifstream fin;
    //fin.open(fileName);
    cout << "\nThe contents of the file: ";
    char ch;
    while (fin.get(ch))
        {
            cout << ch;
        }
    cout << "\nEnd of File\n";
    fin.close();
 
    fout.open(fileName,ios::app);
    cout << "\nEnter more text: \n";
    fout << "Interest thinks!" << "\n";
    fout.close();
 
    fin.open(fileName);
    cout << "\nNew contents of the file: ";
    fin.ignore(2,'\n');
    while (fin.get(ch))
        {
            cout << ch;
        }
    cout << "\nEnd of File\n";
    fin.close();    
 
    int j;
    cin >> j;
 
    return 0;
}
//---------------------------------------------------------------------------
Всем заранее спасибо за помощь!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2009, 18:58
Ответы с готовыми решениями:

Объект ifstream!!!
Скажите пожалуйста, почему при создании объекта ifstream(например fin) и привязке его к определенному файлу (ifstream fin(filename);), и...

Различия ifstream::get() и ifstream::get(ch)
Доброго времени суток. Была тут тема, в которой я не разобрался до конца. Код ниже проверяет баланс скобок в текстовом файле #include...

ifstream
Привет всем такая проблема ввода Student* s;// студенты s = new Student; ifstream fin(&quot;Student.txt&quot;); for(int i(0); i...

8
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
20.05.2009, 19:15
Напиши саму задачу, я что-то не пойму твоего кода.... Там вообще коряво все как-то работает
1
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
20.05.2009, 19:17
Добавь:
C++
1
fin.clear();
после
C++
1
fin.close();
1
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
20.05.2009, 19:36  [ТС]
Я изучаю работу объектов fstream, и мне не понятно почему объект fin не может повторно открыть файл и вывести его содержимое. (ведь fout.open повторно открывает файл!!!).

Добавлено через 4 минуты 34 секунды
Цитата Сообщение от FunDuck Посмотреть сообщение
Добавь:
C++
1
fin.clear();
после
C++
1
fin.close();
Только добавлять нужно не после fin.close(); а после fout.close(); А не можешь написать для чего нужна эта функция, и почему программа начала работать???
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
20.05.2009, 19:45
Потому что ты коряво открываешь))))
Смотри... программа выводит на экран содержимое файла.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream.h>
#include <conio.h>
int main()  {
char text[81], buf[81];
cout << "Enter the name of a file: ";
cin >> text;
ifstream f(text, ios::in)
if (!f)  {
        cout << "Error of opening of a file.";  return 1;
    }
while (!f.eof())  {
f.getline(buf, 81);
cout << buf  < endl;
}
        getch();
        return 0;
}
Т.е. ты файл открываешь, а содержимое его не выводишь.
1
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
20.05.2009, 19:48
C++
1
clear();
сбрасывает состояние флагов. После вывода(из файла) содержимого устанавливается флаг оканчания файла.
1
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
20.05.2009, 19:55  [ТС]
Цитата Сообщение от uto Посмотреть сообщение
Потому что ты коряво открываешь))))
Смотри... программа выводит на экран содержимое файла.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream.h>
#include <conio.h>
int main()  {
char text[81], buf[81];
cout << "Enter the name of a file: ";
cin >> text;
ifstream f(text, ios::in)
if (!f)  {
        cout << "Error of opening of a file.";  return 1;
    }
while (!f.eof())  {
f.getline(buf, 81);
cout << buf  < endl;
}
        getch();
        return 0;
}
Т.е. ты файл открываешь, а содержимое его не выводишь.

А разве так я не могу вывести??
while (fin.get(ch))
{
cout << ch;
}
Сначала ведь именно так и выводится!!!!
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
20.05.2009, 20:01
get () — возвращает код извлеченного из потока символа
или EOF;
get(c) — возвращает ссылку на поток, из которого выполнялось
чтение, и записывает извлеченный символ в с;
get(buf.num.lim='\n') — считывает num-1 символов (или пока не встретится
символ lim) и копирует их в символьную строку
buf. Вместо символа 1 im в строку записывается признак
конца строки ('\0'). Символ lim остается в потоке.
Возвращает ссылку на текущий поток;
getline(buf. num. lim='\n') — аналогична функции get, но копирует в buf и символ
lim;
Так написнао в учебнике, но я так и не понял, пока сам не попрактиковался, что и зачем.. Так что функция getline позволяет вывести всю строку
А тут...
Цитата Сообщение от Alexandr_LN Посмотреть сообщение
while (!f.eof()) {
f.getline(buf, 81);
cout << buf << endl;
}
говорится, что пока не конец файла, выводить каждую строку, вот =)
1
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
20.05.2009, 20:10  [ТС]
Да кстати еще помогло fin.clean()...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2009, 20:10
Помогаю со студенческими работами здесь

ifstream ofstream
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске

Unget and ifstream
Я правильно понимаю, что если ifstream in; string str1; in &gt;&gt; str1, то unget обратно эту строку вернет?

ifstream считывает 0
Здравствуйте. Есть 2 текстовых файла с названиями n.in n.out .Содержимое входящего файла 1 5 2 4 3 9 4 7 5

fstream ifstream
подключил библиотеку fstream создал объект ifstream file открыл файл, поработал(считывал до конца &lt; eof()) сделал file.close(); ...

Ifstream ошибка
int main(int argc, char* argv) { setlocale(LC_ALL,&quot;Russian&quot;); // корректное отображение Кириллицы char buff; // буфер...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru