прочитать текстовый файл и сохранить его в логическом двумерном массиве Stack Overflow

У меня есть текстовый файл, который похож на ниже:

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

Я хочу прочитать и сохранить его в двухмерном массиве.

Во время чтения я хочу сохранить его в логическом массиве, чтобы он имел следующий формат:

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

Решение

Имя файла должно быть строкой:

txtFile.open("myfile.txt");

Затем, согласно вашему вопросу, вам нужно изменить T а также F к инт 1 а также 0, Код для этого:

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,

0

Другие решения

Текст T не является логическим значением или целочисленным значением. Поэтому операция ввода не удастся, так как вы пытаетесь прочитать целочисленные значения.

Вы должны прочитать это как символ и затем проверить, является ли это 'T' или же 'F' и поместите правильное логическое значение в ваш массив.

И говоря об этом, почему у вас нет массива bool?

0

По вопросам рекламы [email protected]