2013-04-03 3 views
0

Я должен скопировать символы файла в большом массиве размера, так что я создал этот код:Создание большого массива размера типа полукокса и копирование символов файла

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)’

(и другие линии ошибок)

Как скопировать все символы файла в большом полукокса ар луч?

+2

* Я должен скопировать символы файла в большом массиве размера * - то, что заставляет вас думать, вы должны? Разве действительно невозможно разобрать содержимое файла на лету? –

+0

Связано: http://stackoverflow.com/q/1567082/179910 –

+0

Я должен прочитать первые 6 элементов каждой строки, поэтому кто-то предлагает мне скопировать весь файл в двумерный массив –

ответ

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 > 'to' size_t * 'для аргумента '2' to '__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; и qork с GetLine строкового заголовка в:

getline(in, strings[i]);

Смежные вопросы