我需要教几个人一些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)检查了这一点。一切都在顺利进行。插图:
cl /EHsc /utf-8 "first.cpp"
从'cmd.exe'开始:
从“PowerShell”开始:
我的问题。 为什么面向初学者的 C++ 教科书不使用带有表情符号、象形文字、西里尔字符的示例?此类教科书的示例:www.learncpp.com、cplusplus.com、Christopher Di Bella's 等