2013-01-01 93 views
-3

我有一個字符串數組,它保留從文件讀取的數據。它由76條線組成。將數組分成多個數組C++

我想要做的是將它們存儲在不同的數組中。 類似於從第21行到第31行的1個陣列。第31到第41個陣列。我怎麼辦... plz幫助

我想將70行分成7個數組,每個數組包含10行。並做到這一點,而無需使用矢量

+5

[Not this again。](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – chris

+0

7 * 10!= 77 ..你想做嗎 ? – asheeshr

+0

你有沒有考慮過使用'std :: vector >>(或'std :: map >>')作爲你的容器?要麼會讓你的生活更輕鬆。並按照@chris留給你的鏈接,它會爲你節省一個痛苦的世界。 – Johnsyweb

回答

2

您使用等於運算==並沒有工作。在整個循環執行中,i將僅等於6次中的一個值。只有當i1122,33,44,5566;對於任何其他值i您的循環將做沒有

您可能改爲使用<

+0

我想知道爲什麼你刪除了該評論。看起來我應該注意。 – chris

1

事情是這樣的:

getline(ol, arr[i/11][i%11]); 

其中ARR是std::vector<std::string>std::vector。或者是數組字符串的數組。

還有另一種方法是:

while (1) { 
    std::string *ptr; 
    if (i < 11) ptr = arr1; 
    else if (i < 22) ptr = arr2; 
    // long list of arrays 

    getline(ol, ptr[i%11]); 
    // increment i, break on eof... 
} 
+1

由於某些未知原因,載體已經不存在。 – chris

+0

我解決了我的自我。首先在一個循環中初始化兩個變量, 例如:for(int i = start; j = 0; i

0
#include <iostream> 
#include <string> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    string arr[8][10]; 

    int i = 0, j = 0; 

    ifstream ol("a.txt"); 

    while(getline(ol, arr[i][j])) 
    { 

     ++j; 
     if(j == 10) 
     { 
      ++i; 
      j = 0; 
     } 
    } 

} 

這是假設你沒有超過80行。