I';我在比较字符数组中的字符时遇到困难 我正在为我的C++类制作扫雷类程序,我在这里读取了这样的文件 4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0 Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100

I';我在比较字符数组中的字符时遇到困难 我正在为我的C++类制作扫雷类程序,我在这里读取了这样的文件 4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0 Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100,c++,char,C++,Char,然后像这样输出一个文件 4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0 Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100 我想我应该先把输入文件中网格的内容读入一个二维字符数组,除非我用零替换句点。希望以后我能对字符数组做一些数学运算(不确定这是否行得通。我是c++新手) 无论如何,我试图检查一个字符是否是星号,但即使该字符是星号,该条件也总是返回false。我做错了什么

然后像这样输出一个文件

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100
我想我应该先把输入文件中网格的内容读入一个二维字符数组,除非我用零替换句点。希望以后我能对字符数组做一些数学运算(不确定这是否行得通。我是c++新手)

无论如何,我试图检查一个字符是否是星号,但即使该字符是星号,该条件也总是返回false。我做错了什么

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream mineData;
    mineData.open("input_mine_data.txt");
    int numRows = 0;
    int numColumns = 0;

    mineData >> numRows;
    mineData >> numColumns;

    cout << numRows;
    cout << numColumns;
    cout << "\n\n";

    char Grid[50][50];


    for (int iRows = 0; iRows < numRows; iRows++)
    {
        for (int iCols = 0; iCols < numColumns; iCols++)
        {
            //if current character is an asterisk
            if (Grid[iRows][iCols] == '*')
            {
                //put the asterisk in the Grid array
                mineData >> Grid[iRows][iCols];
            }

            //if the current character is a period, put a zero
            //in the grid array instead
            else
            {
                Grid[iRows][iCols] = '0';
            }

        }
    }

    for (int iRows = 0; iRows < numRows; iRows++)
    {
        for (int iCols = 0; iCols < numColumns; iCols++)
        {
            cout << Grid[iRows][iCols];

        }
        cout << "\n";
    }

}
#包括
#包括
使用名称空间std;
int main()
{
ifstream数据;
打开(“input_mine_data.txt”);
int numRows=0;
int numColumns=0;
mineData>>numRows;
mineData>>数字列;

cout您的
网格
是空的。您已经初始化了
网格
,但没有向其中读取任何数据,因此检查
网格
中是否有星号肯定会返回
false
。 而不是:

if (Grid[iRows][iCols] == '*') //Empty array will return false
这样做:

char tmp;
if (mineData >> tmp == '*')...

您正在使用
网格
单元化:

if (Grid[iRows][iCols] == '*')
在进行if检查之前,需要将其移动:


然后,您可以检查它是否不是
*
,并将其设置为
0

您在哪里将文件读入网格数组?