Как читать по одному символу за раз из текстового файла в C ++? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать программу для линкора, которая читает текстовую таблицу размером 25x25 символов и помещает информацию в двумерный массив. Я смог настроить массив и прочитать информацию, но по какой-то причине мой первый вложенный цикл читает весь файл, а не одну строку, как я намереваюсь. Я попытался использовать .get () , .getLine () , .peek () и т. Д., Но безуспешно. Я не уверен, правильно ли я использую оператор >> или есть логическая ошибка в циклах. Ниже приведен код моей программы.

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;

char game_map[25][25];


int main()
{

ifstream file("GameMap.txt");    //Opens text file so that data can be read in

for (int i = 0; i < 25; i++) { 
    for (int j = 0; j < 25; j++) {               
        file >> game_map[i][j];
    }
}

for (int i = 0; i < 25; i++) {
    for (int j = 0; j < 25; j++) {
        cout << game_map[i, j];
    }
    cout << "LINE " << i << endl;
}

system("pause");
return 0;
}

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

1 Ответ

2 голосов
/ 08 октября 2019

Вы должны включить и прочитать предупреждения. Компилятор говорит:

warning: left operand of comma operator has no effect [-Wunused-value]
   23 |         cout << game_map[i, j];
      |                          ^

После того, как вы исправите это, оно должно работать.

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;

char game_map[25][25];


int main()
{

ifstream file("GameMap.txt");    //Opens text file so that data can be read in

for (int i = 0; i < 25; i++) { 
    for (int j = 0; j < 25; j++) {               
        file >> game_map[i][j];
    }
}

for (int i = 0; i < 25; i++) {
    for (int j = 0; j < 25; j++) {
        cout << game_map[i][j]; // <-- Fix it
    }
    cout << "LINE " << i << endl;
}

system("pause");
return 0;
}
...