2011-11-13 114 views
0

我有一个随机数据的帐户文件。 该文件中的数据:从文本文件逐行读取C++

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

垃圾不应该GET该处

的第一个数字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

任何提示/帮助将不胜感激。

+0

首先'NumberOfAccounts'应该是一个'int' - 账号总是一个整数。其次,您需要将输入字符串正确转换为数字。 – ChrisF

+0

够简单,但初学者错误,谢谢你的帮助。 – Claud

回答

1

NumberOfAccpounts是双倍的,你正在分配行的第一个字符... 我假设你在文件的第一行加入。

我的C++是废话这么

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

ATOF是一个字符串转换为双的一种方式。你不需要读取整个文件来获得第一行。

+0

我希望能够得到所有的行,因为下一行是帐户的信息,但我只是想先从帐户开始,无论哪种方式,这正是我所寻找的。谢谢。 – Claud

2

两件事。其中一个,你会陷入一个while循环(尽管还有一条线路,将它读入并重新分配帐户数量),直到文件结束。其次,ASCII码与实际数字不一致,因此字符“0”实际上是数字48.当程序读取最后一行,找到“3”字符并将其赋值为一个整数(现在是51),然后输出它。

+0

非常有意义,谢谢你的帮助。 – Claud