2016-04-19 3 views
1

Так что я полный идиот, и это смотрит на меня прямо в лицо, но я просто не могу найти какие-либо ресурсы, которые я могу понять в Google, или Вот.Чтение из файла .txt в двумерный массив в C++

У меня есть текстовый файл, который содержит несколько строк целых чисел, каждое целое разделяется пробелом, я хочу прочитать эти целые числа в массив, где каждая новая строка является первым измерением массива, и каждый целое число на этой строке сохраняется во втором измерении.

Возможно, используется худшая терминология, чтобы объяснить это, извините.

Мой текстовый файл выглядит примерно так:

100 200 300 400 500 
101 202 303 404 505 
111 222 333 444 555 

И я хочу, чтобы результирующий массив будет что-то вроде этого:

int myArray[3][5] = {{100, 200, 300, 400, 500}, 
        {101, 202, 303, 404, 505}, 
        {111, 222, 333, 444, 555}}; 
+1

С одной стороны, обнять стандартной библиотеки C++ и использовать 'зЬй :: vector' (несколько раз) и некоторую обработку потока и струнных потоков. И фий, ваша терминология была в порядке. [Что-то вроде этого] (http://pastebin.com/2Q6heJkW) - это один из способов. – WhozCraig

ответ

0

Я считаю, что

istream inputStream; 
int myArray[3][5]; 
for(int i = 0; i < 3; i++) 
    for(int j = 0; j < 5; j++) 
     istream >> myArray[i][j]; 

должен делать что вам нужно.

0

В вашем случае вы можете сделать что-то вроде этого:

ifstream file { "file.txt" }; 
if (!file.is_open()) return -1; 

int my_array [3][5]{}; 
for (int i{}; i != 3; ++i) { 
    for (int j{}; j != 5; ++j) { 
     file >> my_array[i][j]; 
    } 
} 

Гораздо лучше всего использовать std::vector:

vector<int> my_array; 
int num { 0 }; 
while (file >> num) 
    my_array.emplace_back(num); 
+1

Немного не по теме, но что не так с хорошим ol ''int i = 0'? – Pepedou

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