У меня есть текстовый файл, который похож на ниже:
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] с нулевыми значениями.
Пожалуйста, есть идеи, как я могу это исправить?
Спасибо!
Имя файла должно быть строкой:
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
,
Текст T
не является логическим значением или целочисленным значением. Поэтому операция ввода не удастся, так как вы пытаетесь прочитать целочисленные значения.
Вы должны прочитать это как символ и затем проверить, является ли это 'T'
или же 'F'
и поместите правильное логическое значение в ваш массив.
И говоря об этом, почему у вас нет массива bool
?