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

Получение данных из файла - C++

Восстановить пароль Регистрация
 
QzzQ
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 22
02.08.2014, 17:05     Получение данных из файла #1
Задача№6.
Постройте программу, которая отслеживает пожертвования в Общество Защиты Влиятельных Лиц. Она должна запрашивать у пользователя количество меценатов, а затем приглашать вводить их имена и суммы пожертвований от каждого. Информация должна сохраняться в динамически выделяемом массиве структур. Каждая структура должна иметь два члена: символьный массив (или объект string) для хранения имени и переменную-член типа double — для хранения суммы пожертвования. После чтения всех данных программа должна отображать имена и суммы пожертвований тех, кто не пожалел $10 000 и более. Этот список должен быть озаглавлен меткой "Grand Patrons". После этого программа должна выдать список остальных жертвователей. Он должен быть озаглавлен "Patrons". Если в одной из двух категорий не окажется никого,программа должна напечатать "none". Помимо отображения двух категорий,никакой другой сортировки делать не нужно.
Ее я сделал.

Задача№9.
Выполните упражнение 6, но измените его так, чтобы данные можно было получать из файла. Первым элементом файла должно быть количество меценатов,а остальная часть состоять из пар строк, в которых первая строка содержит имя, а вторая — сумму пожертвования. То есть файл должен выглядеть примерно так:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000

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
61
62
63
64
65
66
67
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib> //для exit(EXIT_FAILURE)
 
using namespace std;
 
struct patron {
    string name;
    double donation;
};
 
int main()
{
    string filename;
fstream file;
    cout << "Enter name of the file: ";
    getline(cin, filename);
    file.open(filename); //вот здесь ругается
    if (!file.is_open())
    {
        cout << "Could not open the file" << filename << "." << endl;
        exit(EXIT_FAILURE);
    }
    int n;
    (file >> n).get();
    patron * p_patron = new patron[n];
    cout << "Reading the information about patrons." << endl;
    for (int i = 0; i < n; i++)
    {
     cout << "Maecenas  #" << i+1 << endl;
       cout << "Enter name " << endl;
        getline(file, p_patron[i].name);
        cout << "and the amount of donations " << endl;
        (file >> p_patron[i].donation).get();
    }
    file.close();
    
    cout << "Grand Patrons." << endl;
    int countgp = 0;
    for (int j = 0; j < n; j++)
    {
        if (p_patron[j].donation >= 10000)
        {
            cout << p_patron[j].name << " - " << p_patron[j].donation << endl;
            countgp++;
        }
    }
    if (countgp == 0)
        cout << "none" << endl;
    cout << endl;
    cout << "Patrons." << endl;
    int countp = 0;
    for (int k = 0; k < n; k++)
    {
        if (p_patron[k].donation < 10000)
        {
            cout << p_patron[k].name << " - " << p_patron[k].donation << endl;
            countp++;
        }
    }
    if (countp == 0)
        cout << "none" << endl;
    
    cin.get();
    return 0;
}
Почему в 19-ой строке выдает ошибку не могу понять?
Пишет вот это:
C++
1
2
3
4
[Error] no matching function for call to 'std::basic_fstream<char>::open(std::string&)'
 [Note] candidate is:
 [Note] void std::basic_fstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::_Ios_Openmode]
 [Note] no known conversion for argument 1 from 'std::string {aka std::basic_string<char>}' to 'const char*'
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 17:05     Получение данных из файла
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
porshe
 Аватар для porshe
52 / 46 / 17
Регистрация: 18.07.2014
Сообщений: 194
02.08.2014, 17:10     Получение данных из файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому что функция open() принимает C-строку и ещё параметры открытия( необязательно ), но не объект класса string. Так будет работать:
C++
1
file.open(filename.c_str());
Метод c_str() возвращает C-строку.
Yandex
Объявления
02.08.2014, 17:10     Получение данных из файла
Ответ Создать тему
Опции темы

Текущее время: 04:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru