2015-02-24 77 views
2

我在這個網站上的第一個問題。另外對C++來說是新的。向量中未知的可變列大小

我一直在尋找一種方法來從文本文件中填充矢量。但是,每行的列大小不同且事先未知。

讓我告訴你一個例子,這是文本文件,我想在矢量獲得:

3 

1 1 

1 2 

0 

(表的含義:有X項目中3個活動,第一個活動1直接前任(活動1),第二個活動也有一個直接前任(活動2),最後一個活動沒有前任)。

我想要這個文本文件在一個向量中,但是我有幾個類似的文本文件,我需要閱讀的列數。

由於我知道每個項目中的活動數量,因此我可以定義行數。但是,我不知道列數...

我現在試過的是使用inFile.good()來查看是否已到達文本文件的末尾。不過,我需要一些東西來看看我是否在行的末尾。我已經有的代碼是:

//READING NUMBER OF ACTIVITIES 

inFile >> nbr_activities; 
cout << nbr_activities << endl; 

//READING PRECEDENCE RELATIONSHIP 
for (int i = 0; i < nbr_activities; i++) 
{ 

    vector<int> temp_vec; 
    while (inFile.good()) 
    { 
     int skills; 
     inFile >> skills; 
     temp_vec.push_back(skills); 
    } 
    precedence_per_activity.push_back(temp_vec); 
} 

//PRINTING THE VECTOR 
for (int i = 0; i < nbr_activities; i++) 
{ 
    int j = 0; 
    while (inFile.good()) 
    { 
     j++; 
     cout << precedence_per_activity[i][j] << ' '; 
    } 
    cout << endl; 
} 

但是,這並沒有給出好的結果。

任何人都可以幫助我嗎?我實在看不出任何解決方案..

+0

'而( inFile.good())'this should''while(inFile >> skills)' – 2015-02-24 12:55:29

回答

0

的問題是在這裏:

//READING PRECEDENCE RELATIONSHIP 
for (int i = 0; i < nbr_activities; i++) 
{ 

    vector<int> temp_vec; 
    while (inFile.good()) // READ FULL FILE 
    { 
     int skills; 
     inFile >> skills; 
     temp_vec.push_back(skills); 
    } 
    precedence_per_activity.push_back(temp_vec); 
} 

對於每一行,你不應該閱讀完整的文件。你需要先取號和做的是另:

//READING PRECEDENCE RELATIONSHIP 
for (int i = 0; i < nbr_activities; i++) 
{ 
    int counter; 
    vector<int> temp_vec; 
    inFile>>counter; 
    for (int j = 0; j < counter; j++) 
    { 
     int skills; 
     inFile >> skills; 
     temp_vec.push_back(skills); 
    } 
    precedence_per_activity.push_back(temp_vec); 
} 
1

看起來precedence_per_activity被定義爲:

vector<vector<int>> precedence_per_activity; 

所以打印你想要的東西,如:

for (auto v : precedence_per_activity) { 
    for (auto i : v) { 
     cout << i << ' '; 
    } 
    cout << endl; 
} 
+0

確實,這個+我的答案應該修復它。 – amchacon 2015-02-24 12:59:07

+0

我不需要在這裏聲明'v'和'i'嗎?因爲這是C++現在給出的錯誤... – user4601116 2015-02-24 13:09:27

+0

@ user4601116哎呀,忘了'auto's,編輯答案 – 2015-02-24 13:14:27