Файл данных C ++ с дополнительной пустой строкой - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть файлы данных с лишними пустыми строками в конце. Это вызывает проблемы с чтением в строках данных. Я использую:

while (datFile.good ())

но .eof () тоже не работал.

Есть предложения?

    while (datFile.good())
    {
        getline (datFile, line);

        istringstream liness(line);

        int z = 0;

        while (z <= index)
        {
            while (liness >> temp)
            {
                if (z == 0)
                {
                    values[0].push_back(atof(temp.c_str()));
                }

                if (z == index)
                {
                    values[1].push_back(atof(temp.c_str()));
                }

                cout << temp << endl;

                z++;
            }
        }

    }

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012
while (getline (datFile, line))
{

    istringstream liness(line);

    // the rest of the loop is unchanged.
    ...
}
2 голосов
/ 03 февраля 2012

Ты будешь использовать статус потока после твоего чтения!

Вы не опубликовали достаточно кода, чтобы сказать, но ввод всегда выглядит примерно так:

while (in >> data) {
    process(data);
}

Не имеет значения, используете ли вы отформатированный или неформатированный ввод. Кроме того, good(), как правило, не так полезен, aabd eof() полезен только для подавления сообщения об ошибке: если вы прочитали ошибку, может быть, что она не удалась, потому что вы прочитали все данные. Никогда не полезно определять, было ли чтение успешным: eof() может дать true, хотя чтение было успешным.

...