2014-07-20 36 views
0

由於某種原因,當我嘗試從txt文件讀取數據時,我的矢量中出現零值。從.txt文件中讀取int以便向量?

這裏是我的代碼:

int main(){ 
    ifstream read("problem13.txt"); 
    vector<int> source; 
    int n; 

    while (read >> n){ 
     source.push_back(n); 
    } 

    for (int i = 0; i < source.size(); i++) 
     cout << source[i]; 

    cout << "Finished."; 

} 

TXT文件是相當長的,但格式爲: 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676

+0

這些數字太大,無法存儲爲'int's – calccrypto

+0

@calccrypto我試圖一次讀取它們的一位數字。我不太確定如何用矢量做到這一點。 – Ryan

+0

你想把每個數字存儲爲'int'嗎? –

回答

0

爲了每個數字存儲爲一個int ,讀取每行並將其存儲在一個字符串中。然後處理每一行。

int main(){ 
    ifstream read("problem13.txt"); 
    vector<int> source; 
    int n; 
    string line; 

    while (read >> line){ 
     string::iterator iter = line.begin(); 
     string::iterator end = line.end(); 
     for (; iter != end; ++iter) 
     { 
      n = (*iter) - '0'; 
      source.push_back(n); 
     } 
    } 

    for (int i = 0; i < source.size(); i++) 
     cout << source[i]; 

    cout << "Finished."; 

} 
+1

他說他剛剛學習了矢量。也許迭代器有點過早? – calccrypto

3

這裏是閱讀逐一:

#include <fstream> 
#include <iostream> 
#include <vector> 

using namespace std; 

int main(){ 
    ifstream read("e:\\problem13.txt"); 
    vector<int> source; 
    char n; 

    while (read >> n){ 
     source.push_back(n - '0'); 
    } 

    for (int i = 0; i < source.size(); i++) 
     cout << source[i]; 

    cout << endl << "Size: " << source.size() << endl << "Finished."; 

} 

但我建議你逐行讀取線或者如果該文件是沒有這麼大的閱讀都在的std :: string和處理字符串(從文件中讀取很昂貴)。