3

コード:

#include <iostream>
#include <iomanip>
using namespace std;

class Ascii_output {
public:
    void run() {
        print_ascii();
    }
private:
    void print_ascii() {
        int i, j;                                                           // i is         used to print the first element of each row
                                                                        // j is used to print subsequent columns of a given row
    char ch;                                                            // ch stores the character which is to be printed
    cout << left;

    for (i = 32; i < 64; i++) {                                         // 33 rows are printed out (64-32+1)
        ch = i;
        if (ch != '\n')                                                 // replaces any newline printouts with a blank character
            cout << setw(3) << i << " " << setw(6) << ch;
        else
            cout << setw(3) << i << " " << setw(6);

        for (j = 1; j < 7; j++) {                                       // decides the amount of columns to be printed out, "j < 7" dictates this
            ch += 32*j;                                                 // offsets the column by a multiple of 32
            if (ch != '\n')                                             // replaces any newline printouts with a blank character
                cout << setw(3) << i+(32*j) << " " << setw(6) << ch;
            else
                cout << setw(3) << i+(32*j) << " " << setw(6);
        }

        cout << endl;
    }
    }
};

出力: ここに画像の説明を入力

適切にインデントされた出力が得られず、値 96 ~ 255 に奇妙な文字が表示されるのはなぜですか?

4

2 に答える 2

6

この行は正しいことをしていません:

ch += 32*j;

あなたは32で数えたい、それはどちらかです

ch += 32;

また

ch = i + 32*j;

出力中に数値と文字の値を一致させることを強くお勧めします。だから変更

cout << setw(3) << i+(32*j) << " " << setw(6) << ch;

cout << setw(3) << int(ch) << " " << setw(6) << ch;
于 2012-11-06T14:20:53.760 に答える
0

127 を超える文字は、標準の od ASCII の一部ではありません。127 以上の Windows に表示される文字は、選択した書体によって異なります。

http://msdn.microsoft.com/en-us/library/4z4t9ed1%28v=vs.71%29.aspx

于 2012-11-06T14:09:42.913 に答える