在C ++程序中使用ASCII字符

时间:2013-04-13 04:57:28

标签: c++

我一直试图在2D数组中打印出_< ------这个字符......但是当我

尝试编译代码,它返回了一些垃圾数字。我想我做错了什么......有人可以帮我解决这个问题吗?

void main (){

    int A[9][9];

    for (int i=0; i<9; i++){
        for (int j=0; j<i; j++){
            A[i][j]= '_';//I am doing this part wrong. 
        }

    }

    for (int r=0; r<9; r++) {
        for (int c=0; c<9; c++)
            cout << setw(3) << A[r][c];
        cout << endl;
    }

    system("pause");
}

3 个答案:

答案 0 :(得分:1)

A是一个int数组。所以cout会尝试打印一个整数。试试cout << char(A[r][c]);

答案 1 :(得分:1)

std::cout::operator<<运算符因多种数据类型而过载,以便于(自动)格式化输出。如果您输入int,则会打印一个数字。如果你给它一个char,它会尝试将它打印成一个角色。因此要么将数组声明为char数组,要么在打印时强制转换数组成员:

cout << static_cast<char>(array[i][j]) << endl;

答案 2 :(得分:0)

<击> 1.将ASCII值分配给整数数组而不是“_”。即使没有改变,它也会工作;但我觉得它看起来更干净。

    A[i][j]= 95; // try this instead of '_'

<击>

  1. 打印时,cout可以打印任何数据类型而不进行转换,但由于我们正在寻找要打印的字符,请尝试显式转换。

    cout << setw(3) << char(A[r][c]);
    
  2. 不确定您使用的编译器,但更好的做法是初始化阵列以避免垃圾值篡改您的输出