Мой 2D массив не читает мои текстовые файлы и выводит их правильно - PullRequest
1 голос
/ 25 июня 2019

Я хочу иметь возможность читать буквы из текстового файла в 2d массив.Я выполняю все шаги, но мой вывод не совсем правильный.

Я пытался инициализировать массив, я пытался изменить циклы for, я пытался локализовать мойзначения const int, но ничего не работает.

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;



int main()
{
    const int ROWS = 5;
    const int COLS = 3;
    ifstream inFile("grades.txt");

    char gradeArray[ROWS][COLS] = {0};

    inFile.open("grades.txt");

    if (!inFile.is_open())
    {
        cout << "Error opening the file.";
        exit(1);
    }

    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            inFile >> gradeArray[i][j];
        }
    }
        cout << gradeArray[0][1];


    inFile.close();

system("pause");
return 0;
}

ФАЙЛ TXT (grades.txt в моих файлах ресурсов)

Редактировать: каждая буква имеет собственный перевод строки.Не уверен, почему они в одном.

ARBCHGCFSBAASE

F

Я ожидаю, что буква 'R' будет выведена в качестве теста, так как это то, что я 'Я спрашиваю в последнем заявлении cout, но я получаю [Нажмите любую клавишу, чтобы продолжить.,.].Так что просто космос.Пожалуйста помоги.Спасибо!

Пока что я попробовал данный мне совет, но он не сработал.Я думаю, что файл не читается правильно?Или файл не выводится правильно ...

1 Ответ

1 голос
/ 25 июня 2019

IIRC, выполняющий inFile >> gradeArray[i][j], захватит пробел;Вы должны быть в состоянии исправить это, читая вместо этого строку, которая пропускает пробелы;просто добавьте #include <string> вверху и затем в цикле прочитайте строку и получите оценку в качестве первого символа, что-то вроде

string line;
inFile >> line;
gradeArray[i][j] = line.empty() ? ' ' : line[0];

или любой символ, который вы хотите представить отсутствующими данными.

...