【发布时间】:2017-07-10 07:07:30
【问题描述】:
C++ 文字
环境:
- 操作系统:Windows 10 专业版;
- 编译器:GCC 最新。
- IDE:Code::Blocks 最新。
- 正在开发:控制台应用程序。
我对数字字面量前缀的理解是,它们对于确定数值类型很有用(不确定)。但是,我对字符和字符串字面量的前缀和后缀有很多困惑。我读了很多书,花了几天时间试图了解情况,但我得到了更多的问题和很少的答案。所以我认为堆栈溢出可能会有很大帮助。
问:
1- 字符串前缀 u8 u U L 的正确用法是什么?
我有以下代码作为示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "\n\n Hello World! (plain) \n";
cout << u8"\n Hello World! (u8) \n";
cout << u"\n Hello World! (u) \n";
cout << U"\n Hello World! (U) \n";
cout << L"\n Hello World! (plain) \n\n";
cout << "\n\n\n";
}
输出是这样的:
世界你好! (普通)
世界你好! (u8)
0x47f0580x47f0840x47f0d8
Q2:为什么 U u ans L 有这样的输出?我希望它只是确定类型而不是编码映射(如果是的话)。
Q3 是否有关于 UTF-8 等编码的简单且中肯的参考资料。我对它们感到困惑,此外我怀疑控制台应用程序是否能够处理它们。我认为理解它们至关重要。
Q4:我也将欣赏解释自定义类型文字的分步参考。
【问题讨论】:
-
"编译器:GCC 最新。" - 请给出版本号。完全有可能在您发表这篇文章和我发表评论之间,可能已经发布了一个新版本。也看看en.cppreference.com/w/cpp/language/string_literal
-
通常最好每个问题问一个问题。多个问题往往会导致答案杂乱无章,让未来的用户更难找到他们正在寻找的信息。
-
例如,回答 1 需要简短讨论字符编码,为什么
std::cout似乎可以处理 UTF8,而std::wcout这将是一个很好的独立问题。 -
谢谢大家,我以后会考虑的。