2015-10-13 67 views
0

因此,我從C++中的文本文件中讀取一些問題。我想要做的是從包含字母網格的文本文件中讀取。以下是我已經設置了:從文件中逐個讀取一個字符(C++)並存儲到二維數組中?

int main() 
{ 
    char grid[10][10]; 
    ifstream input; 
    input.open("puzzle1_size10.txt"); 

    //what goes here 

    input.close(); 
    for(int i = 0; i < 10; i++) 
    { 
     for(int j = 0; j < 10; j++) 
      cout<< grid[i][j]<<" "; 
     cout<<endl; 
    } 
} 

文本文件是這樣的:

10 10 
f e h l o a k r a y 
e s r r t s c d o y 
a l u g d o e e g a 
t c y y m h l j y a 
u r a p s y n a r j 
r e u d c a e p e r 
e t s o c h t p h c 
e g o p e h w l t w 
h h c l s d o e c a 
l n h c a m r l e e 

前兩個數字代表了網格的大小。我試圖讀取每個字符(忽略初始數字)並將字符存儲到名爲grid的數組中。有什麼建議?

我在stackoverflow上發現了其他類似的問題,但沒有一個具有與此相同的上下文,它們都沒有給我一個確定的答案。我只是試圖從一個文件中一次讀取一個字符,並將該字符存儲到二維數組中,以便可以輕鬆地引用數組中的每個字母。有人可以幫忙嗎?

+1

嘗試尋找如何從文件讀取字符/行C++。 10 10變得更容易,因爲你知道每行/文件的結尾是什麼時候。嘗試後,編輯你的問題,以顯示你已經嘗試了//在這裏發生了什麼。 – KPrince36

回答

1

我相信你正在尋找類似的東西?

#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    char grid[10][10]; 
    ifstream input; 
    input.open("File.txt", ios::in); 

    int column = 0; 
    int row = 0; 


    input >> column >> row; 

    for (int column_counter = 0; column_counter < column; column_counter++){ 

     for (int row_counter = 0; row_counter < row; row_counter++){ 

      input >> grid[column_counter][row_counter]; 

     } 
    } 



    input.close(); 
    for(int i = 0; i < 10; i++) 
    { 
     for(int j = 0; j < 10; j++) 
      cout<< grid[i][j]<<" " << endl; 
     cout<<endl; 
    } 
} 

我第一次拿了前兩個數字,並將它們命名爲列和行。然後在兩個for循環中,我添加了計數器來計算網格的位置,直到它們達到您在文件開頭指定的位置。

如果您有任何問題,只需要問!我會盡快爲他們添加評論。我現在正在一家咖啡館。

+0

謝謝,這解決了我的問題!巧合的是,它也幫助我意識到問題所在:我去了我的文檔文件夾,發現我正在閱讀的文件沒有標記爲.txt文件。重命名它,現在我有了我的網格(在重命名它之前,終端輸出一串隨機字符,但沒有順序)。非常感謝!! –

+0

@ N.Sunilkumar沒問題!我很高興它幫助! – Santosderek

0

由於這是標記c++,我推薦你使用std::vector,而不是正常的陣列,這樣你有辦法更靈活的方法

std::string line; 
getline(file, line); // skip first line 
std::vector<std::vector<char>> grid; 
while(getline(file, line)) 
{ 
    std::vector<char> insideV (line.begin(), line.end()); // read string into vector of char 
    grid.push_back(insideV); 
} 

...... 
std::cout << grid[0][0]; // f 
相關問題