40 / 39 / 19
Регистрация: 12.11.2011
Сообщений: 177
1

возможно ли прочитать текстовый файл сначала еще раз без закрытия?

13.03.2012, 15:23. Показов 15565. Ответов 8
Метки нет (Все метки)

Добрый день!!! Подскажите пожалуйста, возможно ли прочитать текстовый файл еще раз сначала? Или чтобы начать чтение снова, надо его закрыть и снова открыть???
Допустим имеется такой текстовый файл: 1 2 3 4 5 6 7 8 9 10
Тогда после прочтения всего файла переменная будет содержать значение 10. Пробовал перевести указатель чтения на начало (seekg(0,ios::begin)), указатель устанавливается на ноль, но если я вновь пробую читать сначала, чтения не происходит... Т.е. в переменной t как было, так и остается значение 10(хотя по логике должно быть 1)


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
#include<iostream>
#include<fstream>               //для потоков
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Rus");    //поддержка русского языка
 
    char namefile[30];  
    
    cout<<"Введите путь к файлу:  ";
 
    cin.getline(namefile,29);
    
    ifstream in(namefile);                              //создаем поток 
 
    if(in.is_open())            //проверка открытия файла
        cout<<"Файлы успешно открыт"<<endl;
    else
    {
        cout<<"Ошибка открытия файла"<<endl;
        return -1;
    }
    
    int t;                      //для хранения переменной
    
    while(!in.eof())
    {
        in>>t;
        cout<<t<<endl;
    }
    cout<<"Чтение окончено\n";
 
    in.close();
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2012, 15:23
Ответы с готовыми решениями:

Создать текстовый файл. Прочитать его и определить, сколько раз в нём встречается буква «а»
Создать текстовый файл. Прочитать его и определить, сколько раз в нём встречается буква «а». вот я...

Можно ли прочитать данные еще раз?
Вот допустим в консоли я ввожу последовательность чисел. Мне нужно считать её как строку и как...

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл. Переписать в...

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту. Dev C++
8)В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.

8
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
13.03.2012, 15:37 2
Цитата Сообщение от DPS Посмотреть сообщение
возможно ли прочитать текстовый файл еще раз сначала?
seekg
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
13.03.2012, 15:42 3
С in.seekg( 0, ios::beg ); все должно работать. Приведи неработающий код с "перемоткой".
0
40 / 39 / 19
Регистрация: 12.11.2011
Сообщений: 177
13.03.2012, 15:49  [ТС] 4
Вот код:

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
#include<iostream>
#include<fstream>               //для потоков
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Rus");    //поддержка русского языка
 
    char namefile[30];  
    
    cout<<"Введите путь к файлу:  ";
 
    cin.getline(namefile,29);
    
    ifstream in(namefile);      //создаем поток 
 
    if(in.is_open())            //проверка открытия файла
        cout<<"Файлы успешно открыт"<<endl;
    else
    {
        cout<<"Ошибка открытия файла"<<endl;
        return -1;
    }
    
    int t;                      //для хранения переменной
    
    while(!in.eof())            //пока не конец файла
    {
        in>>t;
        cout<<t<<endl;          //выводим на экран
    }
    
    in.seekg(0,ios::beg);       //устанавливаем указатель на начало
 
    cout<<"Читаем еще раз:  "<<endl;
 
    while(!in.eof())            //читаем еще раз до конца
    {
        in>>t;
        cout<<t<<endl;          
    }
 
    cout<<"Чтение окончено\n";
 
    in.close();
 
    return 0;
}
В первый раз все прекрасно читает, а вот во второй... Проверял, где стоит указатель после первого чтения функцией tellg(), показывает, что стоит на нулевой позиции...
Миниатюры
возможно ли прочитать текстовый файл сначала еще раз без закрытия?  
0
2017 / 1616 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
13.03.2012, 15:56 5
C++
1
2
in.clear();
in.seekg(0, ios::beg);
1
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
13.03.2012, 15:57 6
Пробуй так:
in.clear();
in.seekg(0,ios::beg);
1
40 / 39 / 19
Регистрация: 12.11.2011
Сообщений: 177
13.03.2012, 16:01  [ТС] 7
Цитата Сообщение от rangerx Посмотреть сообщение
C++
1
2
in.clear();
in.seekg(0, ios::beg);
Гениально!!! Заработало Вот где это можно было прочитать??? Весь интернет перерыл, перечитал главы про потоки книжках в пяти, но нигде про это сказано не было. Спасибо!!!
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
13.03.2012, 16:14 8
http://www.cplusplus.com/refer... /ifstream/
1
40 / 39 / 19
Регистрация: 12.11.2011
Сообщений: 177
13.03.2012, 16:20  [ТС] 9
Цитата Сообщение от lazybiz Посмотреть сообщение
Спасибо, буду изучать...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2012, 16:20
Помогаю со студенческими работами здесь

Powerpoint в office 365 не освобождает файл после закрытия еще 30-60 минут
Здравсвтуйте, стокнулся с такой проблемой, есть клиенты с office 365, порядка 50-60 человек, у всех...

Файл: Хочу прочитать текстовый файл в textbox, но он выводит какой то бред...
Хочу прочитать текстовый файл в textbox, но он выводит какой то бред... Помогите пожалуйста. Вот...

Создать текстовый файл из 5 строк, прочитать созданный файл
Создать текстовый файл из 5 строк, прочитать созданный файл, 1. Из строк все цифры переписать в...

После закрытия Delphi второй раз она не запускается без перезагрузки системы
После закрытия Delphi второй раз она не запускается без перезагрузки системы при попытке запуска...

Дан текстовый файл. В каждой его строке сначала идет текст, а потом - вещественное число. Создать два файла: файл, содер
Дан текстовый файл. В каждой его строке сначала идет текст, а потом - вещественное число. Создать...

Прочитать текстовый файл
Прочитать текстовый файл КОД: #include &lt;conio.h&gt; #include &lt;stdio.h&gt; int main() { FILE...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru