Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 67, средняя оценка - 4.93
Garred
282 / 80 / 4
Регистрация: 19.04.2011
Сообщений: 220
#1

Считывание чисел из файла с расширением .txt - C++

17.09.2011, 21:28. Просмотров 10926. Ответов 11
Метки нет (Все метки)

Решаю на с++ задачу, которая называется «Вырубка деревьев». Входными данными являются два целых числа, записанных через пробел в файле .txt. Помогите считать эти числа из файла и записать их в переменные типа int. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2011, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание чисел из файла с расширением .txt (C++):

Считывание из файла .txt - C++
У вас есть файл input.txt содержащий строки вида key:value key1:value1 Необходимо открыть файл и вывести содержимое в...

Построчное считывание файла txt в массив - C++
Добрый день. Пытаюсь вспомнить "как там считывать из файла", вроде бы делала, но давно это было. Сейчас сижу, кручу-верчу, а понять...

Считывание double чисел из txt в массив - C++
Надо считать числа в массив double. Не использовать <iostream> и <fstream> и <iomanip>. Не работают, пробовала, все примеры которые...

Считывание числовых значений из текстового файла .txt - C++
Привет. Передо мной стоит такая задача: Напишите программу. вычисляющую сумму всех целых чисел, хранящихся в текстовом файле и разделенных...

Считать 10 целых чисел с файла 1.txt и записать в файл 2.txt максимальный элемент и его индекс - C++
нужно считать 10 целых чисел с файла 1.txt и записать в файл 2.txt максимальный элемент и его индекс я начала делать, но в файл 2.txt...

написать программу,которая считает 10 чисел из файла 1.txt и запишет в новый файл максимальное из этих чисел. - C++
написать программу,которая считает 10 чисел из файла 1.txt и запишет в новый файл максимальное из этих чисел.

11
alkagolik
Заблокирован
17.09.2011, 23:59 #2
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
#include<iostream>
#include<fstream>
#include<cstring>
 
int main(){
 
    int x, y;
    char *file = "/home/username/documents/file.txt";
    std::string str;
 
    /* инициируем файловый поток */
    std::ifstream ifs(file);
 
    /* обработка исключения */
    if(!ifs.is_open()){
        std::cerr << "Error: file " << file << "is not open\n";
        return 1;
    }
    /* считываем данные в строку */
    else
        while(getline(ifs, str))
            std::cout << str << "\n";
 
    /* закрываем поток */
    ifs.close();
 
    return 0;
}
Добавлено через 1 час 37 минут
может как-то получше организовать можно...
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
57
58
59
60
#include<iostream>
#include<fstream>
#include<cstring>
#include<cmath>
 
//int chislo_y(std::string tmp, int razr);
int chislo(char* tmp, int razr);
 
int main(){
 
    int x, y, tmp, i = 0, count = 0;
    char *file = "/home/chertopolox/documents/file.txt";
    std::string str;
 
    /* инициируем файловый поток */
    std::ifstream ifs(file);
 
    /* обработка исключения*/
    if(!ifs.is_open()){
        std::cerr << "Error: file " << file << "is not open\n";
        return 1;
    }
    /* считываем файл, конвертируем и выводим результат*/
    else
        while(getline(ifs, str)){
            
            /* работаем число х*/
            while (str[i] != ' '){
                ++count; ++i;
            }
            x = chislo(&str[0], count);
            
            count = 0; ++i;
            
            /* работаем число y*/
            while(str[i]){
                ++count; ++i;
            }
            y = chislo(&str[i - count], count);
            count = 0; i = 0;
            
            /* вывод результата */
            std::cout << x << " "<< y << "\n";
        }
 
    /* закрываем поток */
    ifs.close();
 
    return 0;
}
 
int chislo(char *tmp, int razr){
    int temp, chislo_ = 0, dec = 10, i = 0;
    temp = pow(dec, razr);
    while(temp != 1){
        chislo_ = chislo_ + (tmp[i] - '0') * temp;
        temp /= dec; ++i;
    }
    return chislo_ / dec;
}
входные данные
Код
 file.txt:
100 31
221223 1
3 00105
вывод:
Код
/Debug$ ./tmp 
100 31
221223 1
3 105
0
Garred
282 / 80 / 4
Регистрация: 19.04.2011
Сообщений: 220
18.09.2011, 14:59  [ТС] #3
Alkagolik, вбиваю ваш код из второго примера, компилятор выдает такую ошибку:
error C2065: 'getline' : undeclared identifier
и ругается на 25 строку в коде. Не могу понять, в чем дело.
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.09.2011, 15:03 #4
C++
1
std::getline
0
Garred
282 / 80 / 4
Регистрация: 19.04.2011
Сообщений: 220
18.09.2011, 15:10  [ТС] #5
С std::getline; выдает две ошибки:
error C2039: 'getline' : is not a member of 'std'
error C2065: 'getline' : undeclared identifier
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
18.09.2011, 15:11 #6
Garred,
C++
1
#include <string>
0
Garred
282 / 80 / 4
Регистрация: 19.04.2011
Сообщений: 220
18.09.2011, 15:23  [ТС] #7
С #include<string> выдает такие ошибки:
warning C4551: function call missing argument list
error C2568: 'identifier' : unable to resolve function overload
Ругается на
C++
1
std::getline;
error C2065: 'getline' : undeclared identifier
Ругается на
C++
1
while(getline(ifs, str))
0
alkagolik
Заблокирован
18.09.2011, 15:57 #8
код бы правленый выложил.
меняй
C++
1
while(getline(ifs, str))
на
C++
1
while(std::getline(ifs, str)) //cin.getline(), std::cin.getline()
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
18.09.2011, 15:58 #9
#include <string>

std::getline()
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
18.09.2011, 16:02 #10
Цитата Сообщение от kazak Посмотреть сообщение
std::getline()
Не обязательно
0
Garred
282 / 80 / 4
Регистрация: 19.04.2011
Сообщений: 220
18.09.2011, 16:07  [ТС] #11
Благодарю. Все ошибки исправил.
0
alkagolik
Заблокирован
18.09.2011, 16:08 #12
уже не в первый раз вижу что gcc подхватывает то, что форточный компилятор выплевывает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 16:08
Привет! Вот еще темы с ответами:

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt - C++
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

Считывание чисел из файла в массив - C++
Делая расчетку, запнулся на считывании данных :cry: Имеется файл вида n m 2 3 2 5 1 5 Например: 3 3

Считывание целых чисел из файла - C++
Всем привет! Есть задача: считать из файла целые числа (в файле может быть все, что угодно) и сохранить их сумму в новый файл, вот код: ...

Считывание отрицательных чисел из файла - C++
Собственно как считать из файла отрицательное число? Положительные числа считываются нормально, при считывание отрицательных программа...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
18.09.2011, 16:08
Ответ Создать тему
Опции темы

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