Читать строку за строкой из текстового файла C ++ - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть файл со случайными данными для учетных записей. Данные в файле:

5

2871 2,19 8

1234 95,04 23

3341 0,00 10

3221 -1,08 21

7462 404,14 4

3425 4784,00 200

3701 99,50

ЮНК НЕ ДОЛЖЕН ПОЛУЧИТЬ ЗДЕСЬ

3333

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

Поэтому мой вопрос заключается в том, как я могу прочитать файл и прочитать построчно, а в качестве первого числа указать количество учетных записей, которые необходимо обработать.

Код до сих пор:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() 
{

    double NumberOfAccounts;

    ifstream File("test.dat");
    string line;

    if(File)
    {
        while(getline(File,line))
        {
            NumberOfAccounts=line[0];
        }

    File.close();
    }

    cout<<NumberOfAccounts;

    system("pause");

    return 0;
}

Сейчас он просто печатает 51.

Любые советы / помощь будут оценены.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Две вещи.Во-первых, вы застреваете в цикле while (пока есть строка, прочитайте ее и переназначьте количество учетных записей) до конца файла.Во-вторых, числа ASCII не соответствуют фактическим числам, поэтому символ «0» на самом деле является числом 48. Вы получаете 51, когда программа читает последнюю строку, находит символ «3», присваивает его целому числу (котороетеперь 51), затем выводит его.

1 голос
/ 14 ноября 2011

ЧислоOfAccpounts двойное, вы назначаете первый символ строки Я полагаю, вы указали первую строку в файле.

Мой C ++ - это дерьмо, поэтому

псевдокод

if(File)
{
  if getLine(File, line)
  {
    NumberOfAccounts =atof(line);
  }
  File.close();
}
cout<<NumberOfAccounts;
system("pause");
return 0;

atof - это один из способов преобразования строки в двойное число. Вам не нужно читать весь файл, чтобы получить первую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...