Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/80: Рейтинг темы: голосов - 80, средняя оценка - 4.54
maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166
1

Считывание до конца файла

16.08.2012, 15:29. Просмотров 15354. Ответов 6
Метки нет (Все метки)

В каждой строке файла 2 целых числа.
Нужно считать по 2 числа до конца файла и выводить в каждую строку сумму этих двух чисел.
Раньше с файлами в С++ не работал.
Можете объяснить как считывать ,выводить данные и какие команды что делают?
Искал в интернете нормальные описания, но не нашёл.
Пожалуйста, помогите разобраться
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2012, 15:29
Ответы с готовыми решениями:

Считывание байтов с конца файла
Добрый день, уважаемые форумчане. Возник вопрос: Как считывать байты с конца...

Считывание из файла до конца строки
Нужно написать программу, которая создаёт файл, каждая строка которого содержит...

Построчное считывание с файла до конца строки
Можно ли применить в цикле такую конструкцию: while(!\n){} , чтобы прога...

Считывание до конца входного потока
Что значит считывание данных до конца входного потока? Знаю, что на C++...

Считывание до конца потока в числовой массив
Здравствуйте. Проблема с Как реализовать считывание до конца потока из файла...

6
Пaтрик
427 / 395 / 132
Регистрация: 21.01.2012
Сообщений: 974
Завершенные тесты: 1
16.08.2012, 15:34 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream inp("numbers.txt");
    if (!inp.is_open())
        return 1;
    int number1, number2;
    while (inp >> number1 && inp >> number2)
        std::cout << number1 << " + " << number2 << " = " 
                  << (number1 + number2) << std::endl;
    inp.close();
}
1
SubTerran
8 / 8 / 1
Регистрация: 13.08.2012
Сообщений: 18
16.08.2012, 15:35 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<fstream>
 
using namespace std;
 
int main()
{
    string namefile = "file.txt";
 
    ifstream ifs(namefile.c_str());
    if (!ifs) cerr << "can't open file\n";
 
    int a = 0;
    int b = 0;
 
    while (ifs >> a >> b)
        cout << a + b << '\n';
    
    system("pause");
    return 0;
}
1
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2012, 15:56 4
maSt, можно считывать в несколько способов, парни выше показали тебе потоковый ввод тобишь ifstream>> сейчас накидаю тебе ещё несколько примеров. Также отмечу что важен формат в котором твои числа хранятся в файле(с истинно бинарными файлами трюк с потоковым вводом не прокатит)
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2012, 16:17 5
maSt, ниже пример с текстовым форматом данных с возможностью подсчёта числа параметров в строке а также обнаружением пустых строк
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
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{
    int val;
    int count;
    string line;//Áóäåò ñîäåðæГ*ГІГј òåêóçóþ ñòðîêó ГЁГ§ ГґГ*éëГ*
    ifstream ifs;//ÎáúÿâëåГ*ГЁГҐ ïîòîêГ* Г·ГІГҐГ*ГЁГї
    stringstream ss;//Ñòðîêîâûé ïîòîê (òîæå Г·ГІГ® ГЁ ifstream
    //Г*Г® äëÿ ñòðîêè - óäîáГ*Г*Гї ГўГҐГ№Гј âîáùåì)
    //Г‡Г*ïîìГ*ГЁ ГЅГІГі ГґГЁГ·Гі Г± open
    ifs.open("input.txt");//Г€Г*èöèГ*ëèçГ*öèÿ ïîòîêГ* Г·ГІГҐГ*ГЁГї
    if(!ifs.is_open())//ÏðîâåðêГ* îòêðûëñÿ ГґГ*éë èëè Г*ГҐГІ
        cout<<"Error open input.txt\n";
    else
    {
        //Åñëè Г±ГѕГ¤Г* ïîïГ*ëè ГІГ® ГґГ*éë ГўГ±Вё ГІГ*ГЄГЁ îòêðûëñÿ
        //ÈòГ*ГЄ Гї îáåùГ*Г« Г·ГІГ® Г·ГІГҐГ*ГЁГҐ áóäåò ГЎГҐГ§ ïðÿìîãî ïîòîêâîãî ââîäГ*
        while(getline(ifs,line))
        {
            count = 0;
            //Ïî÷åìó Г·ГЁГІГ*ГҐГ¬ Гў ñòðîêó? - Ïîòîìó ГЄГ*ГЄ ìîæåì
            //ïðîâåðèòü Г±ГЁГІГіГ*öèþ êîãäГ* ñòðîêГ* ГЇГіГ±ГІГ*
            //ëèáî êîãäГ* Гў Г*ГҐГ© 1-Г* ëèáî áîëåå ГЇГ*Г°Г*ìåòðîâ
            //ГІГ*êîé ââîä>> Г*ГҐ ïîçâîëèò Г*Г*Г¬ âûÿâëÿòü ГІГ*ГЄГЁГҐ ìîìåГ*ГІГ»
            cout<<line<<" params count: ";
            ss.str(line);//Г€Г*èöèГ*ëèçèðóåì Г*Г*ГёГҐГ© ñòðêîîé ïîòîê
            while(ss>>val)
                count++;
            if(count == 0)
                cout<<"line is empty!";
            else
            {
                cout<<count<<" params : ";
                //ГЋГІГ¬Г*ГІГўГ*ГҐГ¬ ñòðèГ*ãïîòîê ГўГ*Г*Г·Г*ëî
                    ss.clear();//ÑáðГ*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈ EOF Гў ñòðèГ*ãïîòîêå
                ss.seekg(0,ios::beg);//Г¤Г*Г*Г*ûõ ñòðîêè
                while(ss>>val)
                    cout<<val<<" ";
            }
            ss.clear();//ÑáðГ*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈ EOF Гў ñòðèГ*ãïîòîêå
            cout<<endl;
 
        }
        ifs.close();//Г‡Г*êðûòèå ïîòîêГ* Г·ГІГҐГ*ГЁГї
    }
    
    return 0;
}
Содержимое input.txt
5 5
15
45 41 54

15 45
21 241 12 12 36
1
Миниатюры
Считывание до конца файла  
maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166
16.08.2012, 16:18  [ТС] 6
Спасибо всем большое, сейчас буду разбираться.
0
-=ЮрА=-
16.08.2012, 16:19     Считывание до конца файла
  #7

Не по теме:

maSt, это ещё не всё по чтению файлов, как я говорил есть ещё бинарные файлы в которых числа пишутся байтами и в тектовике такие файлы выглядят абракадаброй, если есть желание могу показать работу с ними

0
16.08.2012, 16:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2012, 16:19
Привет! Вот еще темы с ответами:

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

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

Чтение файла с несколькими знаками конца файла
В файле несколько раз встречается ноль, и ни как не получается прочитать его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru