因此,我的代码的前提是从.txt读入2d数组。阵列是一个游戏板,但前两行决定了棋盘的大小。在我阅读之后,我希望它能找到字符“U”所在的位置,然后显示数组,但只显示U和它周围的什么。问题是我不能让数组打印正确的大小,显示U的代码也不起作用。
ifstream inputFile;
int boardSizeRow;
int boardSizeCol;
inputFile.open("C:\\Users\\Michael\\Desktop\\fileboard2.txt");
inputFile >> boardSizeRow;
inputFile >> boardSizeCol;
inputFile.get();
char gameBoard[20][20];
for (int row = 0; row < boardSizeRow; row++)
{
for (int col = 0; col < boardSizeCol; col++)
{
gameBoard[row][col] = inputFile.get();
}
}
for (int row = 0; row < boardSizeRow; row++) //////////////TO TEST PRINT
{
for (int col = 0; col < boardSizeCol; col++)
{
cout << gameBoard[row][col];
}
}
cout << endl;
cout << endl;
const int ROWS = 20;
const int COLS = 20;
bool toPrint[ROWS][COLS] = {false};
for (int i = 0; i < ROWS; i++ )
{
for (int j = 0; j < COLS; j++)
{
if (gameBoard[i][j] == 'U')
{
//set parameters around:
toPrint[i][j] = true;
toPrint[i][j-1] = true; //West
toPrint[i][j+1] = true; //East
toPrint[i-1][j] = true; //North
toPrint[i+1][j] = true; //South
}
}
}
for (int i = 0; i < ROWS; i++ )
{
for (int j = 0; j < COLS; j++)
{
if (toPrint[i][j])
{
cout << gameBoard[i][j] ;
}
else
{
cout <<"0";
}
}
cout <<endl;
}
cout << endl;
return 0;
。 txt文件::
20
20
WWWWWWWWWWWWWWWWWWWW
W GO W W
W WW w S W
W H W GW w W
WPW WW G W
WK W W
W W W W w w W
WK WU W
SW w w W
W W
w W G W
G W w W
D wwwww W
K w D W
w w W w w W
ww w WWWWWWW
G w W
ww w S w W
WWW G W
WWWWWWWWWWWWWWWWWWWW
答案 0 :(得分:0)
您忘记在文本中阅读新的行符号。如果你看一下游戏棋盘阵列,你会发现第二行的第一项是10''。
修改后的代码:
for (int row = 0; row < boardSizeRow; row++)
{
for (int col = 0; col < boardSizeCol; col++)
{
gameBoard[row][col] = inputFile.get();
}
inputFile.get();//read new line symbol here
}
for (int row = 0; row < boardSizeRow; row++)
{
for (int col = 0; col < boardSizeCol; col++)
{
cout << gameBoard[row][col];
}
cout<<endl;//output new line here
}