读取文本文件并将其存储到布尔二维数组C ++

时间:2018-08-19 13:10:32

标签: c++ arrays boolean readfile type-2-dimension

我有一个文本文件,如下所示:

T T T T T T T T T F
T T T T T T T T T F
T T T T T F T T T T 
T T F T T F T T T F
T T T T T T T T T T

我想阅读并将其存储在2维数组中。

在阅读的同时,我想将其存储在一个布尔数组中,使其具有以下格式:

1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 0 1 1 1 1 
1 1 0 1 1 0 1 1 1 0
1 1 1 1 1 1 1 1 1 1

我写了以下代码:

#define ROWS 5
#define COLUMNS 10
int myArray[ROWS][COLUMNS];

void txtFileInput()     
{
    int i,j;            
    ifstream txtFile;
    txtFile.open (myfile.txt);

    for (i=0;i<ROWS;i++){
        for (j=0;j<COLUMNS;j++){

        txtFile >> myArray[i][j];
        }
    }
    txtFile.close();
}

该代码无法正常工作,因为它返回了一个2个具有零值的dim数组[5] [10]。

请问我如何解决它?

谢谢!

2 个答案:

答案 0 :(得分:0)

文件名应为字符串:

txtFile.open("myfile.txt");

然后,根据您的问题,需要将TF更改为int 10。代码:

for (i=0;i<ROWS;i++){
    for (j=0;j<COLUMNS;j++){
        char read;
        txtFile >> read;
        if(read == 'T')
            myArray[i][j] = 1;
        else if(read == 'F')
            myArray[i][j] = 0;
    }
}

另外,请考虑使用类型为bool的矩阵而不是int

答案 1 :(得分:0)

文本T不是布尔值或整数值。因此,当您尝试读取整数值

时,输入操作将失败。

您必须将其读取为字符,然后检查它是'T'还是'F'并将正确的布尔值放入数组中。

而且,为什么没有bool数组?