2016-11-28 306 views
1

我正在嘗試逐行閱讀一個txt文件,其中每行可能有不同數量的元素。我找到了向量的矢量,但我無法弄清楚爲什麼我只寫入向量中的第一個向量。所有其他人都是空的。C++矢量矢量故障

這裏的代碼在數據讀取的代碼片段:

vector<vector<int>> all(numverts); 
for (int i = 0; i <= (numverts - 1); i++) { 
    // reads a line of data 
    vector<int> edges; 
    int connect; 
    while (filein >> connect) { 
    edges.push_back(connect); 
    } 
    all[i] = edges; 
    edges.clear(); 
} 
+3

'while(filein >> connect)'將在整個文件被讀取後停止。 –

+0

那麼,如何調整以停止每條新線? –

+1

只是一個普遍的評論 - 它非常值得在代碼編輯器中使用'clang-format'。您可以用一個按鍵將整個文件格式化爲您喜歡的編碼風格。認真的說,這可能是我在C++編程中最喜歡的事情。 –

回答

5

您可以使用getlinestringstream。這樣,文件的每一行都被分開讀取,然後輸入到矢量中(通過串流)。

vector<vector<int> > all(numverts); 
for(int i = 0; i < numverts; i++) 
{ 
    std::string line; 
    std::getline(filein, line); 
    std::stringstream lineStream(line); 
    int connect; 
    while(lineStream >> connect) 
    { 
     all[i].push_back(connect); 
    } 
} 
+1

謝謝!我沒有聽說過stringstream。這工作完美。我很高興能夠學習更多新東西。 –