获取 Dev-C++ 构建的程序以将 UNICODE 字符输出到 Windows 命令行

2024-03-05

如果您能回答我的任何问题,那就太好了。

独家新闻如下:我正在泰国向 11 年级学生教授编程入门课程。到目前为止进展顺利,他们的英语水平足够高,我可以用英语教书,让他们用英语编写程序,一切都很好。

然而,作为非拉丁字符语言的使用者,我觉得他们至少应该了解什么是 UNICODE。我不会对他们进行测试,也不会因为实现细节而让他们陷入困境,但我想向他们展示一个可以使用泰语字符进行 I/O 的 UNICODE 程序示例。

我的操作受到以下限制,这些限制都无法改变(至少在本学期):

  • 该程序必须在 Windows 7 上运行
  • 该程序必须是 C 语言(而不是 C++)
  • 我们必须使用 Dev-C++(v. 4.9.9.3)作为我们的 IDE(我将尝试说服管理员在下学期进行更改,但他们可能不想)
  • 该程序应该输出到命令行(我希望它“看起来像”我们迄今为止编写的程序)
  • 我希望它易于设置和运行,尽管我不反对包含批处理文件来为孩子们做一些设置工作。

以下是我已经取得的进展以及我的问题:

  • 在控制面板 > 区域 > 管理 > 非 UNICODE 程序的语言中设置为泰语。
  • 我使用“chcp 874”来设置泰语代码页 http://msdn.microsoft.com/en-us/goglobal/cc305142.aspx在命令行中,但键盘上的字符显示为垃圾字符。这可能是因为键盘映射错误还是我必须更改其他内容?
  • 我用以下行编写了一个程序: printf("\u0E01\n");它打印 ก,泰语字母表中的第一个字母。这是正确的语法吗?
  • 我收到编译器警告“仅 C++ 和 C99 支持通用字符”。 Dev-C++ 不能编译为 C99 吗?有没有办法获得 C99 编译器?
  • 我运行代码并得到垃圾字符。我想这可能是由于编译器、命令行或许多其他因素造成的。

我很想用一个输出 สวัสดีโลก(泰语相当于“Hello World!”)的程序来结束本课程。我已经进行了大量的谷歌搜索,但我发现的每个答案要么在这种特定情况下不起作用,要么涉及不同的 IDE。


好的,这是我的一点帮助。我不使用 Dev-C++ 作为 IDE,因此我无法帮助您处理 IDE 特定的事情,但以下内容是大多数 C/C++ 编译器的标准配置:

wprintf is the printf宽字符(unicode)的实现。

当使用宽字符时,您将使用wchar_t代替char用于定义字符串。

所以你可能会做这样的事情

#include <wchar.h>

int main(int argc, char** argv) {
    wchar_t* str = L"สวัสดีโลก";
    wprintf(L"%s", str);
    system("pause");
    return 0;
}

wprintf很可能就是您正在寻找的。

通过研究可以找到用于打印和操作宽字符串的其他函数wchar.h头文件。

参考:wprintf - C++ 参考 http://www.cplusplus.com/reference/cwchar/wprintf/

在引号前使用 L 意味着您打算定义一个宽字符串。 (统一码)

希望有帮助,

-Dave

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

获取 Dev-C++ 构建的程序以将 UNICODE 字符输出到 Windows 命令行 的相关文章

随机推荐