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

Чтение текстового файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать индекс вхождения подстроки в строку? http://www.cyberforum.ru/cpp-beginners/thread1513572.html
Как задать шаблон строки? Объясню на примере: мне надо узнать индекс подстроки в строке, используя, например, String::IndexOf(String). Искомая подстрока имеет вид "=", т.е. состоит из двух символов - символа "=" и любой цифры диапазона .
C++ Ошибка в сортировке массива #include <cmath> #include <iostream> using namespace std; void sort(int n); void swap(int *p1,int *p2); int a; int main(){ int i; for(i=0; i<7; i++){ cout<<"введите "<< i << " элемент массива :"; http://www.cyberforum.ru/cpp-beginners/thread1513487.html
Способы объявления шаблона C++
Здравствуйте! Возникли непонятки в ходе изучения шаблонов. Взглянем на код: #include <iostream> using namespace std; template <typename T> void Func(T value) {
Подскажите . Unable to open include file 'LOSTREAM.H' C++
Подскажите пожалуйста что не так , только начал изучать
C++ Создание объекта в const методе http://www.cyberforum.ru/cpp-beginners/thread1513445.html
Есть код:void OrderPart::_printDocument(const QString &filename) const { QPrintDialog *dialog = new QPrintDialog(this); ... } Вываливается сообщение: ошибка: invalid conversion from 'const QWidget*' to 'QWidget*' QPrintDialog *const dialog = new QPrintDialog(this); ^ Если убрать const, то все ок. А если...
C++ Форматирование вывода в c++ Вот к примеру код из C#: Console.WriteLine(" {0} plus {1} ravno {2}", i, j, i+j); Как использовать примерно так-же в c++? Чтобы в cout записать некие {0}, {1}, {2} и в конце по порядку указать какая переменная соответствует чему? подробнее

Показать сообщение отдельно
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 578

Чтение текстового файла - C++

12.08.2015, 11:34. Просмотров 333. Ответов 8
Метки (Все метки)

Знакомлюсь с чтением текстового файла. Изначально была такая программа:

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
#include<iostream>
using namespace std;
struct spip 
{
    char name[20];
    double sum;
};
 
int main()
{
    int s = 0, k = 0;
    int patrons;
    cout<<"Enter the number of patrons: ";
    cin>>patrons;
    spip* ps = new spip[patrons];
    cout<<"Enter name and sum of donation \n";
    for (int i = 0; i<patrons; i++)
    {
        cin.ignore();
        cout<<"Name: ";
        cin.get((ps+i)->name,20);
        cout<<"Sum: ";
        cin>>(ps+i)->sum;
        if ((ps+i)->sum > 10000)
            s=s+1;
        else
            k=k+1;
                
    }
    cout<<"Grand patrons: \n";
    if (s>0) {
    for (int i = 0; i<patrons; i++)
    {
            if (((ps+i)->sum)>10000) 
        cout<<(ps+i)->name<<"\n";
                                    
    } 
            }
    else
    cout<<"none";
    cout<<"\n\nPatrons: \n";
    if (k>0){
    for (int i = 0; i<patrons; i++)
    {
            if (((ps+i)->sum)<10000 )
        cout<<(ps+i)->name<<"\n";
            
        
    }
            }
    else
    cout<<"none";
    delete [] ps;
    return 0;
}
Теперь нужно сделать тоже самое, но только считать с текстового файла.
К примеру в текстовом файле записано следующее:
2
Sam Stone
9000
Rich Raptor
33400

Попробовал написать:

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
#include<iostream>
#include<fstream>
using namespace std;
struct spip 
{
    char name[20];
    double sum;
};
 
int main()
{
    ifstream inFile;
    inFile.open("text.txt");
    int s = 0, k = 0;
    int patrons;
    inFile>>patrons;
    spip* ps = new spip[patrons];
    int i = 0;
    while (inFile.good() && i<patrons)
    {
 
        inFile.get((ps+i)->name,20);
        inFile>>(ps+i)->sum;
        if ((ps+i)->sum > 10000)
            s=s+1;
        else
            k=k+1;
        i++;
                
    }
    if(inFile.eof())
        cout<<"End of file reached\n";
    cout<<patrons<<endl;
    cout<<"Grand patrons: \n";
    if (s>0) {
        for (int i = 0; i<patrons; i++)
        {
            if (((ps+i)->sum)>10000) 
        cout<<(ps+i)->name<<"\n";
                                    
        } 
              }
    else
        cout<<"none";
    cout<<"\nPatrons: \n";
    if (k>0){
        for (int i = 0; i<patrons; i++)
        {
            if (((ps+i)->sum)<10000 )
        cout<<(ps+i)->name<<"\n";
            
        }
            }
    else
        cout<<"none";
    delete [] ps;
    inFile.close();
    return 0;
}
В итоге вывелась какая то фигня. Где я напартачил?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru