Читать текстовый файл и отображать данные в C ++ - PullRequest
0 голосов
/ 30 августа 2011

Я хочу прочитать текстовый файл и отобразить данные. Проблема в том, что цикл while не имеет конца и ничего не отображает. Что не так?

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <limits>

/* text file example:
    john
    3453
    23

    james
    87
    1

    mike
    9876
    34
*/


struct entry
{
    // Passengers data
    std::string name;
    int weight; // kg
    std::string group_code;
};

entry read_passenger(std::ifstream &stream_in)
{
    entry passenger;
    if (stream_in)
    {
        std::getline(stream_in, passenger.name);
        stream_in >> passenger.weight;
        std::getline(stream_in, passenger.group_code);
        stream_in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }

    return passenger;
}

int main(void)
{
    std::ifstream stream_in("data.txt");
    std::vector<entry> v; // Contains the passengers data
    const int limit_total_weight = 10000;   // kg
    int total_weight = 0;                   // kg
    entry current;
    if (stream_in)
    {
        std::cout << "open file" << std::endl;
        while (!stream_in.eof()) // Loop has no end
        {
            std::cout << current.name << std::endl; // Nothing will be displayed
        }
            return 0;
    }
    else
    {
        std::cout << "cannot open file" << std::endl;
    }
}

1 Ответ

4 голосов
/ 30 августа 2011

Кажется, вы забыли когда-либо вызывать read_passenger, поэтому ваш цикл снова и снова печатает значение по умолчанию (пустое) current.name.(Вы должны получить много и много новых строк, хотя это не совсем «ничего не отображает»).

...