簡體   English   中英

輸出結果不是我預期的

[英]The output result is not what I expected

#include <iostream>

using namespace std;

int main(void)
{
    const int Map_x = 30, Map_y = 30;

    for (int x = 0; x < Map_x; ++x)
        cout << "■";

    cout << endl;

    for (int y = 0; y < Map_y; ++y)
    {
        for (int x = 0; x < Map_x; ++x)
        {
            if (x == 0 || x == Map_x - 2)
                cout << "■";

            cout << " ";
        }

        cout << endl;
    }

    for (int x = 0; x < Map_x; ++x)
        cout << "■";

    cout << endl;

    return 0;
}

我想使用“■”字符來打印一個大正方形,但似乎正方形的右側被弄亂了,我很確定這不是UNICODE問題,而且我認為代碼也沒有問題。 在用“#”替換“■”字符后,它確實打印了我期望的大方塊。 我不知道為什么正方形的右側會弄亂“■”字符。

我的IDE:Visual Studio 2015專業版操作系統:Windows 10 Pro 64位

這是一些屏幕截圖:

當我使用“■”時

這就是我要的

因此,“■”不是字符,而是字符串文字。 當您嘗試執行char c = "■"; ,那么編譯器將給出如下錯誤。 #include<cstring>標頭中使用strlen(const char *str)來測量其長度,然后得到3。

1.cpp:7:14: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
     char c = "■";

選擇一個不同的角色。 嘗試使用ASCII 254■而不是Unicode字符。

Windows控制台使用的固定寬度字體中的字符不是正方形。 包括填充在內,它們的大小約為8x16。 您需要使水平軸的字符數大約增加一倍才能獲得類似於正方形的字符。

有關更多擴展的字符代碼,請參見此鏈接。

確保您也為cmd.exe使用了合理的字體。

我將您的來源修改為:

#include <iostream>

using namespace std;

int main(void)
{
    const int Map_x = 30, Map_y = 30;
    char c = 254;

    for (int x = 0; x < Map_x; ++x)
        cout << c;

    cout << endl;

    for (int y = 0; y < Map_y; ++y)
    {
        for (int x = 0; x < Map_x; ++x)
        {
            if (x == 0 || x == Map_x - 2)
                cout << c;

            cout << " ";
        }

        cout << endl;
    }

    for (int x = 0; x < Map_x; ++x)
        cout << c;

    cout << endl;

    getchar();

    return 0;
}

我得到這個:

在此處輸入圖片說明

我寫了很多游戲機,我相信一次輸出2個空格是一個經驗法則:

    for (int x = 0; x < Map_x; ++x)
    {
        if (x == 0 || x == Map_x - 2)
            cout << "■";

        cout << "  ";
//               ^^ TWO!
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM