Ошибка : Class не содержит члена "getline" С++

igoodmood

При написании программы появилась ошибка : "Error: class "std::basic_ofstream>" не содержит члена "getline". Пытался выяснить причину возникновения ошибки, но увы-безрезультатно. Поэтому прошу помощи у вас, дорогие форумчане. Ошибка находится в 48 строке. Вот сам код :
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
    struct gamers
    {
        char Name[30];
        int coin;
        int status;
    };
int main()
{
    setlocale(LC_ALL, "Russian");
    int sap;
    cout << "Введите количество футбольных команд : ";
    cin >> sap;
    gamers *pas = new gamers[sap];
    for(int i(0); i < sap; i++)
    {
        cin.sync();
        cout << "Введите название команды:";
        cin.getline(pas[i].Name,30);
        cout << "Введите количество очков команды " << pas[i].Name << ":";
        cin >> pas[i].coin;
        cout << "К какой группе относится команда " << pas[i].Name << " (1-сильная,2-слабая):";
        cin >> pas[i].status;
        cin.get();
        system("cls");
    }
    std::sort(pas, pas + sap, [](const gamers & a, const gamers & b){ return a.status < b.status || (a.status == b.status && a.coin < b.coin); });
    ofstream outfile;
    outfile.open("cppstudio.txt");
    for(int i(0); i < sap; i++)
    { 
        outfile << pas[i].Name << '\t' << pas[i].coin << '\t' << pas[i].status << '\n';
    }
    outfile.close();
    delete [] pas;
    char *str= new char [30];   
    ifstream outfile;
    outfile.open("cppstudio.txt");
    int index = 0;
    do
    {
        index++;
        if(index != 4) cout << outfile << endl;
        outfile.getline(str, 30);
    } while (!outfile.eof());
    outfile.close();
    system("pause");
    return 0;
}
5 ответов

igoodmood

41-ю строку убери, но тогда нужен fstream. Или имя другое придумай для ifstream.


igoodmood

Ошибка находится в 48 строке.
вы ошибаетесь.давайте по порядку. я задам вам два вопроса.1. смотрим строку 32 и строку 41. мы видим объявление двух переменных разного типа, но с одним и тем же именем.как вы можете прокомментировать этот момент? вот компилятор считает, что это - ошибка, и так делать нельзя.2. смотрим 47 строку:
if(index != 4) cout << outfile << endl;
давайте уточним, что именно вы здесь пытались вывести в консоль?компилятор вас тоже понять не смог. и сообщил об ещё одной ошибке.если исправить первые две ошибки, то код компилируется:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
    struct gamers
    {
        char Name[30];
        int coin;
        int status;
    };
int main()
{
    setlocale(LC_ALL, "Russian");
    int sap;
    cout << "Введите количество футбольных команд : ";
    cin >> sap;
    gamers *pas = new gamers[sap];
    for(int i(0); i < sap; i++)
    {
        cin.sync();
        cout << "Введите название команды:";
        cin.getline(pas[i].Name,30);
        cout << "Введите количество очков команды " << pas[i].Name << ":";
        cin >> pas[i].coin;
        cout << "К какой группе относится команда " << pas[i].Name << " (1-сильная,2-слабая):";
        cin >> pas[i].status;
        cin.get();
        system("cls");
    }
    std::sort(pas, pas + sap, [](const gamers & a, const gamers & b){ return a.status < b.status || (a.status == b.status && a.coin < b.coin); });
    
    {   //<--- разруливаем конфликт имен переменных
        ofstream outfile;
        outfile.open("cppstudio.txt");
        for(int i(0); i < sap; i++)
            outfile << pas[i].Name << '\t' << pas[i].coin << '\t' << pas[i].status << '\n';
    
        outfile.close();
        delete [] pas;
    }    
        
        
    char *str= new char [30];   
    ifstream outfile;
    outfile.open("cppstudio.txt");
    int index = 0;
    do
    {
        index++;
 
        //<--- здесь вы должны самостоятельно внести исправление
        //if(index != 4) 
          //  cout << outfile << endl;
        
        outfile.getline(str, 30);
    } while (!outfile.eof());
    outfile.close();
    system("pause");
    return 0;
}


igoodmood

В 47 строке я пытаюсь сделать вывод первых 3 строк из текстового файла


igoodmood

В 47 строке я пытаюсь сделать вывод первых 3 строк из текстового файла
    char str[30] = {};
    ifstream outfile("cppstudio.txt");
 
    for(size_t n=0;n<3;++n)
        outfile.getline(str, 30),
        cout << str << endl;
 
    outfile.close();


igoodmood

Спасибо вам, работает, извините за наглость, но не могли бы вы подсказать также как сделать вывод последних 3 строк текстового файла?