2011-11-13 175 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