从文本文件c ++中逐行读取

时间:2011-11-13 23:29:38

标签: visual-c++

我有一个包含帐户随机数据的文件。 文件中的数据:

  

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

     JUNK永远不应该在这里

     

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 个答案:

答案 0 :(得分:2)

两件事。一,你在一段时间内陷入困境(虽然还有一条线,读入并重新分配账户数),直到文件结束。其次,ASCII数字与实际数字不对应,因此字符“0”实际上是数字48.当程序读取最后一行时,你得到51,找到“3”字符,将其分配给一个整数(现在是51),然后输出它。

答案 1 :(得分:1)

NumberOfAccpounts是double,你要指定行的第一个字符... 我假设你在文件的第一行说明。

我的C ++是废话所以

伪代码

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

atof是将字符串转换为double的一种方法。您无需读取整个文件即可获得第一行。