使用 printf 在控制台中使用 C++ unicode 字符?

2023-12-01

My code:

#include <iostream>
#include <windows.h>

using namespace std;

int pos[9];

int main() {
    printf(" %c ║ %c ║ %c ", pos[0], pos[1], pos[2]);
    printf("═══╬═══╬═══");
    printf(" %c ║ %c ║ %c "), pos[3], pos[4], pos[5];
    printf("═══╬═══╬═══");
    printf(" %c ║ %c ║ %c "), pos[6], pos[7], pos[8];
    system("pause");
}

我的控制台输出:

Console

我知道还有其他方法可以做到这一点,但重点是使用 printf 来实现这一点:|有任何想法吗?


To use printf,并假设您使用的是美国本地化的 Windows,控制台代码页为 437(运行chcp检查),那么如果将源文件保存在代码页 437 中,则以下更正后的代码将起作用。一种方法是使用 Notepad++ 并设置Encoding->Character sets->Western European->OEM-US在菜单上。这样做的缺点是你的源代码在大多数编辑器中都不能很好地显示,除非它们特别支持 cp437,甚至 Notepad++ 在重新打开文件时如果不再次设置编码也无法正确显示它。

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>

int main()
{
    char pos[9] = {'X','O','X','O','X','O','X','O','X'};
    printf(" %c ║ %c ║ %c \n", pos[0], pos[1], pos[2]);
    printf("═══╬═══╬═══\n");
    printf(" %c ║ %c ║ %c \n", pos[3], pos[4], pos[5]);
    printf("═══╬═══╬═══\n");
    printf(" %c ║ %c ║ %c \n", pos[6], pos[7], pos[8]);
    system("pause");    system("pause");
}

在 Windows 上,由于 API 本身是 UTF-16,因此更好的方法是使用以下代码并将文件保存为带 BOM 的 UTF-8:

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>

int main()
{
    char pos[9] = {'X','O','X','O','X','O','X','O','X'};
    _setmode(_fileno(stdout), _O_U16TEXT);
    wprintf(L" %C ║ %C ║ %C \n", pos[0], pos[1], pos[2]);
    wprintf(L"═══╬═══╬═══\n");
    wprintf(L" %C ║ %C ║ %C \n", pos[3], pos[4], pos[5]);
    wprintf(L"═══╬═══╬═══\n");
    wprintf(L" %C ║ %C ║ %C \n", pos[6], pos[7], pos[8]);
    system("pause");
}

输出(两种情况):

 X ║ O ║ X
═══╬═══╬═══
 O ║ X ║ O
═══╬═══╬═══
 X ║ O ║ X
Press any key to continue . . .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 printf 在控制台中使用 C++ unicode 字符? 的相关文章

随机推荐

  • 生成两个具有相同maven项目的jar

    我想在执行 mvn clean install 时从同一个 Maven 项目生成两个 jar 两个罐子之间的唯一区别是内容META INF folder 目前 我已经我的应用程序 jar 我现在想要my jar xxx jar and 我的
  • 如何对主键重新排序?

    我有一个包含 5700 条记录的表 主键是一个整数 现在我注意到缺少一些值 像这样 100 data 101 data 102 data 104 data 103不见了 我如何更新所有行以使顺序正确 104变成103在我的示例中 在一个 S
  • 无法加载文件或程序集“AjaxControlToolkit”或其依赖项之一。该系统找不到指定的文件

    我已经使用我的 Visual Studio 安装了 AJAXcontrolsToolkit 并将 Combobox Ajaxcontrol 控件放置在我的网页中 当我编译代码时出现以下错误 无法加载文件或程序集 AjaxControlToo
  • 如何将云存储上的文件中的 json 导入到 Bigquery

    我正在尝试通过 api 将文件 json txt 从云存储导入到 Bigquery 但抛出错误 当通过网络用户界面完成此操作时 它可以正常工作并且没有错误 我什至设置了 maxBadRecords 0 有人可以告诉我我在这里做错了什么吗 代
  • 预加载的声音被卸载?

    所以 我有以下测试代码
  • 在 JavaScript 中使用“<”和“>”运算符比较两个字符串

    比较运算符如 gt and lt return Boolean当它们的输入作为两个字符串值给出时的值 我尝试了几个例子 String vs String console log firstName lt lastname true cons
  • PHP 中的 DOM:解码实体并设置 nodeValue

    我想使用 PHP 对 XML 文档执行某些操作DOM其标准库的一部分 正如其他人已经发现 然后就必须处理解码的实体 为了说明困扰我的问题 我举一个简单的例子 假设我们有以下代码 doc new DOMDocument doc gt load
  • Android 将文件保存到外部存储

    我在 Android 应用程序上创建目录并将文件保存到其中时遇到了一些问题 我正在使用这段代码来执行此操作 String filename MyApp MediaTag MediaTag objectId png File file new
  • 如何修复-没有这样的表:main.auth_user__old

    有人可以详细解释如何修复ERROR no such table main auth user old 当我尝试将数据添加到我的注册模型时 它会出现在我的 Django 应用程序中 我已经使用以下方法解决了这个问题 1 删除db sqlite
  • 标准化向量?

    如何标准化一个 M N 向量 使其所有元素的总和等于 1 我在网上浏览了一下 似乎没有什么完全符合我的需要 谢谢 将所有元素相加 然后将每个元素除以总和 显然 除法 至少 需要采用浮点数 由于这表示浮点矩阵 因此在保持最大精度的同时进行求和
  • 当类定义不可见时捕获异常

    我正在解决一个问题 即损坏的输入文件导致抛出异常 异常类是在实现文件中定义的 因此对我来说是不可见的 它确实继承自std exception 我尝试简单地向前声明异常类 因为我只是通过引用捕获它 然而 这给了我一个error invalid
  • 如何使用 Apache-POI 增加合并单元格值大于单元格宽度的 Excel 行的高度?

    我正在使用 java 类创建一个大的 excel Excel 包含一个存储字符串的合并单元格 字符串的长度非常大 我动态获取该字符串 我需要增加合并单元格的高度 以便完整的字符串适合该单元格 我尝试过使用 换行文本 它会换行文本 但不会增加
  • 使用 CSS 将圆分段

    我知道你可以使用 border radius hack 在 CSS 中画一个圆圈 但是有什么办法可以让他们有像这张图这样的片段吗 有没有办法通过 HTML 和 CSS 而不是 JS 来做到这一点 是的 您可以使用以下两种方法之一获得此类自定
  • ggplot 和 geom_sf 未在世界地图上显示标线和刻度线

    我正在尝试使用naturalearth 数据和ggplot2 获取世界地图 但是 经纬网和轴刻度线和标签未显示在世界地图的 x 轴上 AFAIK这个问题曾经被解决过coord sf expand FALSE 我有使用这个的旧代码 但它似乎不
  • R:在 lapply 内的函数中传递相应数据帧的索引(来自数据帧列表)

    我有 9 个数据框的列表list dataframes从文件和函数中读取func modification来修改它们 我想传递的值pos列表中相应数据框的索引 以便各个行可以拥有各自的dmv and method名称 怎么做 dmv lt
  • 使用 lambda 在 amazon lex aws 上自定义有效负载

    我有一个简单的机器人用于订购披萨 在履行功能中 我想显示视频而不是消息 这是我到目前为止所拥有的 use strict Close dialog with the customer reporting fulfillmentState of
  • wamp服务器:如何部署jsp应用程序

    我刚开始使用 WAMP 服务器 我无法在其上部署我的 java 应用程序 仅运行 Html 页面 请帮助了解目录结构以及保存 jsp java class war xml 文件的位置 当我单击 jsp 链接时 JSP 代码显示在 html
  • C# 如何将 float 转换为 int

    我需要将 float 转换为 int 单精度 32 位 例如 浮点 2 十六进制 40000000 到整数 1073741824 知道如何实施吗 我在msdn帮助中寻找它 但没有结果 float f int i BitConverter T
  • 将 JTable 保存为文本文件

    我正在保存包含 JTable 中的数据的 txt 和 doc 文件 在保存时 它会像在表格中一样布置文本 但由于数据长度不同 它不适合 所以我试图将日期安排如下 第1列名称 第1行第1列数据 第2列名称 第1行第2列数据 第3列名称 第1行
  • 使用 printf 在控制台中使用 C++ unicode 字符?

    My code include