使用 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 字符? 的相关文章

  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 强制 Java 最低版本以“java -version:”运行在 Windows 上不起作用

    我想强制应用程序运行的 JVM 最低版本为 1 6 或更高版本 即 1 6 我的理解是 您可以使用 version 命令行参数来执行此操作 我尝试了一下 在Linux下似乎可以正常工作 但在Windows下却不行 LINUX 我在 Linu
  • WinSock.h 和 WinSock2.h 使用哪个?

    有谁知道 WinSock h 和 WinSock2 h 之间的区别 我知道它们不使用相同的库 lib 但我不知道 WinSock2 是否仅添加了新功能 或者是否还改进了 WinSock 1 功能 我正在使用 IP TCP 套接字 并希望使用
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 在 Windows 上部署 Meteor

    我觉得很奇怪的是 没有关于如何将自己的 Meteor Web 应用程序部署到自己的 Windows 服务器上的详细分步说明 或者也许我只是无法使用谷歌找到这样的解释 在很多页面上 甚至在关于 SO 的一些问题上 我发现人们只是简单地说 bu
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi

随机推荐

  • 生成两个具有相同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