为什么 C++ 初学者教科书不使用带有表情符号、象形文字、西里尔字符的示例? [关闭]

问题描述 投票:0回答:0

我需要教几个人一些C++初学者的课程。

我阅读了宣言“UTF-8 Everywhere”并同意它。但是大多数针对初学者的 C++ 语言教科书并没有从一开始就着重于编码程序、字符串和字符文字。所有示例和练习均以包含在 ASCII 表中的拉丁字符文字给出。

我想要一个包含如下示例的教程:

first.cpp(采用 UTF-8 编码,无 BOM)

#include <iostream>

int main()
{
    std::cout << "Hello, World! Привет, мир! 你好, 世界! 😎\n";
    return 0;
}

也就是说,在示例和练习中,不仅应该有来自拉丁字母的符号,还应该有来自西里尔字母、象形文字、表情符号(文字)的符号。

我还希望示例和练习具有跨平台代码,至少适用于 Windows 和 Linux。

据我所知,C++ 语言的当前标准“ISO/IEC 14882:2020”定义了 96 个可能字符的基本源字符集,包括拉丁字母。但是根据标准,这个集合可以使用 Unicode 表中的字符进行扩展,使用通用字符名称,如

\U0001F60E
(代表符号😎(U+1F60E))。

现代编译器扩展了标准,允许您使用源代码中使用的编码中的所有字符。例如,如果我以 UTF-8 编码存储源代码,那么我可以使用 Unicode 表中的所有字符。

因此,您可以将源代码保存在 UTF-8 编码的文件中(即使没有 BOM),使用 CRLF 或 LF 作为行尾。您甚至可以在 Windows 操作系统中编译生成的文件,甚至可以在 Linux 操作系统中编译。生成的可执行文件(分别为 ELF 和 PE 格式)将起作用。

我使用“Windows 10”操作系统中的 MSVC 编译器(来自“Microsoft C++ Build Tools”)以及“Ubuntu”操作系统中的 GCC 编译器(通过 WSL)检查了这一点。一切都在顺利进行。插图:

  1. “Windows 10”,Microsoft C++ 构建工具。为了编译,我使用了命令
cl /EHsc /utf-8 "first.cpp"

从'cmd.exe'开始:

从“PowerShell”开始:

  1. “Ubuntu”(通过“Windows 10”上的 WSL 2)、g++ 编译器、bash:

我的问题。 为什么面向初学者的 C++ 教科书不使用带有表情符号、象形文字、西里尔字符的示例?此类教科书的示例:www.learncpp.comcplusplus.comChristopher Di Bella's

c++ unicode encoding utf-8 cross-platform
© www.soinside.com 2019 - 2024. All rights reserved.