首页 > 解决方案 > 如何在数组中返回负字符?

问题描述

我正在为学校做一个 C++ 项目,我正在尝试将一个矩阵从一个文本文件写入一个数组。源数据中有负数和两个 5x5 矩阵。我不断得到不同的字符(╧或=)而不是负数:

void main()
{
    char c;
    char nbRow , nbCol;
    int location = 0;
    int MatrixArray[10][10];
    int negNbr;
    int k = 0;
    int l = 0;

    cin.get(c);
    nbRow = c;
    cout << "Number of rows: " << nbRow << endl;
    cin.get(c);
    cin.get(c);
    nbCol = c;
    cout << "Number of columns: " << nbCol << endl;

    while (!cin.eof())
    {

            cin.get(c);
            //cout << (int)c << endl;
            if (!isblank(c) && (isdigit(c) || c == 45))
            {
                cout << c << " | test1 " << " | ";
                if (c == 45)
                {
                    cin.get(c);
                    negNbr = (char)c;
                    negNbr = negNbr * -1;
                    cout << (char)negNbr;
                    MatrixArray[k][l] = (char)negNbr;// *-1;

                }
                else //if (isdigit(c))
                {
                    MatrixArray[k][l] = (char)c;
                }
                cout << " |test2 " << k << l << "| " << (char)MatrixArray[k][l] << endl;

                    if (l == 4)
                    {
                        k++;
                        l = 0;
                    }
                    else l++;
                }

    }

标签: c++

解决方案


cin.get读取输入的单个字符。如果您调用cin.get(c)并输入123控制台,c最终将包含char '1',而不是数字1或数字123或类似的东西。如果然后将其转换为int,您将得到int 49, 因为'1'是 ASCII 代码点49

从控制台读取整数的正确方法是使用>>运算符:

int i;
std::cin >> i;

使用>>运算符,如果您123在控制台中键入,i最终将得到 value 123


推荐阅读