Чтение Floats из текстового файла работает до тех пор, пока не выйдет из области видимости потока c ++

0

Я пытаюсь прочитать в float из файла с точно 70x50 чисел в 2D-массив. Когда я читаю в файле и cout данные в массиве, я получаю правильные цифры. Но когда я пытаюсь использовать данные в моем массиве после того, как я прочитал в файле, данные становятся тарабарщиной. Нужно ли мне выделять кучную память для сохранения после чтения файла? Код ниже:

int main() {

fstream file("numbers.txt");
if (!file) {
    cerr << "Sample data could not be opened" << endl;
    system("PAUSE");
    exit(1);
}


float data[70][50];
for (int i = 0; i < 70; i++){
    for (int j = 0; j < 50; j++) {
        float n;
        file>> n;
        data[i][j] = n;
        cout << data[i][j];
    }
}

cout << data[70][50];
system("PAUSE");
face.close();

return(0); 
}
Теги:
floating-point
arrays
file
io

2 ответа

3
Лучший ответ

Эта строка приведет к неопределенному поведению

cout << data[70][50];

Массив имеет размеры [70][50], что означает, что последними действительными индексами являются [69][49].

Чтобы прямо ответить на ваш вопрос:

Нужно ли мне выделять кучную память для сохранения после чтения файла?

Нет. data вашего массива отлично. Если вы должны были зациклиться на нем и cout все значения от [0][0] до [69][49] вы заметили бы, что значения будут правильными.

  • 0
    Ааа, переходя от Matlab к C ++ и забыл нулевую индексацию. Спасибо!
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню