我的2D阵列无法读取我的文本文件并无法正确输出

时间:2019-06-24 23:44:14

标签: c++ arrays file ifstream

我希望能够将文本文件中的字母读入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)

编辑:每个字母都有自己的换行符。不知道为什么他们在同一个。

A [R 乙 C H G C F 小号 乙 一种 一种 小号 E

F

我希望将字母“ R”作为测试输出,因为这是我在上一个cout语句中要求的,但是我得到了[按任意键继续。 。 。]。所以只是一个空间。请帮忙。谢谢!

到目前为止,我已经尝试过提供给我的建议,但是它没有用。我认为文件未正确读取?或文件未正确输出...

1 个答案:

答案 0 :(得分:1)

IIRC执行inFile >> gradeArray[i][j]将捕获空白;您应该能够通过读取字符串来解决此问题,而该字符串将跳过空白;只需在顶部添加#include <string>,然后在循环中读入字符串并获得成绩作为第一个字符,例如

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

或您要代表缺失数据的任何字符。