2013-04-03 50 views
0

我有一個大尺寸的陣列複製文件的字符,所以我創造了這個代碼:創建char類型的大尺寸陣列和複製文件中的字符

std::vector<std::vector<char> > strings; 

strings.resize(rows); 

for (int i = 0; i < rows; i++) 
{ 
    strings[i].resize(columns); 
} 

ifstream in("filename.txt"); 

for (int i = 0; i < rows; i++)  
    in.getline(strings[i], columns); 

strings應包含的所有字符文件,但是當我編譯這個程序,我有以下錯誤:

no matching function for call to ‘std::basic_ifstream >::getline(std::vector >&, int)’

(和其他錯誤線)

我怎麼能一個文件的所有字符複製在一個大的焦炭AR射線?

+2

*我有一個大尺寸的陣列複製文件的字符* - 是什麼讓你覺得你必須?是否真的沒有辦法在飛行中解析文件內容? –

+0

相關:http://stackoverflow.com/q/1567082/179910 –

+0

我必須閱讀每行的前6個元素,所以有人建議我複製2維數組中的所有文件 –

回答

0

in.getline()不能以char作爲第一個參數。您應該使用std::string。你可以做getline(in, strings[i]);

要填入值的2D矢量,你可以這樣做:

for (int i = 0; i < rows; i++) { 
    for (int j = 0; j < columns; j++) { 
    in >> strings[i][j]; 
    } 
} 
+0

數組行代表文件行,數組列代表行中的每個字符 –

+0

使用此更改我有以下錯誤:「無法將std :: vector >'轉換爲參數」size_t *「 '2'到'__ssize_t getline(char **,size_t *,FILE *)'「 –

+0

不要使用'vector ',使用'vector '。另外,你做了哪些改變? – OGH

0

你應該使用std::string instread的std::vector<char>

如果由於某種原因,你真正需要使用的數據結構std::vector<std::vector<char> >

然後使用std::string來讀取文件,然後將其轉換爲std::vector<char>但我不明白你爲什麼想這樣做

0

由於OGH建議,我會用std::vector<std::string> strings;,而不是vector<vector<char>> strings;用繩子頭的函數getline qork:

getline(in, strings[i]);