C++ 在Linux控制台中打印填充和空方块会产生垃圾字符

C++ 在Linux控制台中打印填充和空方块会产生垃圾字符,c++,linux,string,character-encoding,C++,Linux,String,Character Encoding,我试图解决编程挑战。 基本上,我已经用普通字符解决了问题的本质,例如执行zoom(7)returns 0000000 0xxxxx0 0x000x0 0x0x0x0 0x000x0 0xxxxx0 0000000 这是正确的模式 但是,作为额外的困难,字符必须是空的正方形□位于0和填充的■位于x的位置 如果我尝试替换这些字符,结果是 □□□□□□□��□□□□ �■■■■■□□□□□��□□□□ ��□□□��■■■□□□□□��□□□□ ���■�□□��■■■□□□□□��□□□□ ��□

我试图解决编程挑战。 基本上,我已经用普通字符解决了问题的本质,例如执行
zoom(7)
returns

0000000
0xxxxx0
0x000x0
0x0x0x0
0x000x0
0xxxxx0
0000000
这是正确的模式

但是,作为额外的困难,字符必须是空的正方形
位于
0
和填充的
位于
x
的位置

如果我尝试替换这些字符,结果是

□□□□□□□��□□□□
�■■■■■□□□□□��□□□□
��□□□��■■■□□□□□��□□□□
���■�□□��■■■□□□□□��□□□□
��□□□��■■■□□□□□��□□□□
�■■■■■□□□□□��□□□□
□□□□□□□��□□□□
我不知道是什么原因导致了这个问题,如果控制台不能打印这样的方块,或者我在打印浮动时是否需要一些额外的规格,或者其他什么。我尝试按照中的建议定义平方,但没有任何改变

这是返回3x3解决方案的基本示例

#include <iostream>
#include <string>

int main() {
    std::string res;

    std::string prim;
    std::string sec;

        //~ prim = "x";         // filled square
        //~ sec = "0";          // empty square

        prim = "■";         // filled square
        sec = "□";          // empty square

    res += sec; res += sec; res += sec; res += "\n";
    res += sec; res += prim; res += sec; res += "\n";
    res += sec; res += sec; res += sec; res += "\n";

    std::cout << res;

    return 0;   
}
#包括
#包括
int main(){
std::string res;
std::字符串prim;
std::字符串秒;
//~prim=“x”//填充正方形
//~sec=“0”//空方块
普里姆=”■";         // 填充正方形
秒=”□“;//空方块
res+=秒;res+=秒;res+=秒;res+=“\n”;
res+=sec;res+=prim;res+=sec;res+=“\n”;
res+=秒;res+=秒;res+=秒;res+=“\n”;

Std::Cube欢迎堆栈溢出。请花时间阅读和参考您在这里所问的内容和如何使用。我猜您需要使用<代码> STD::WScGe> <代码>和 STD::WcOUT ,并且以适当的C++格式为字符格式化Unicode字符串。