C++字符类型值由OS定义
C++ char type values are defined by OS?
我知道char类型的前128个符号是ASCII符号,我的意思是,如果打印它们,它们会按照ASCII表中的原样进行配置。现在他们其他人呢?据我所知,其他128个符号并没有严格定义。取决于什么,如果我像下面这样打印所有可能的字符值,会打印什么?
char a = 0;
for (int i = 0; i < 256; i++)
{
if (i == 128)
cout << "------------------------------" <<endl;
cout << a++ <<endl;
}
我可以配置输出吗?
char
的前128个值不一定与ASCII字符对应。char
的值对应于执行字符集中的字符,是一个实现定义集。该字符集成员的值是特定于区域设置的(§2.3/3):
执行字符集的成员和附加成员集的值是特定于区域设置的。
字符文字(如'a'
)的类型为char
,值等于执行字符集中的字符值。字符串文字也是如此。如果文字中的字符不在实现定义的执行字符集内,则它具有实现定义的值(§2.14.4/5):
如果没有这样的编码,则通用字符名将转换为实现定义的编码。
在许多编译器中,您可以配置执行字符集。例如,对于g++
,可以使用-fexec-charset
选项。
一旦你输出了文本,对它的解释就取决于观看它的媒介,比如终端。
由于终端解释std::cout
写入的字节,因此您通常可以将终端配置为将字节显示为Latin-1、Latin-15、西里尔字母或任何其他您想要的字符。
在您的程序中,您无法配置它在显示器上的显示方式。你唯一能做的就是,你的代码如何解释字节。因此,为了使用Latin-1,您的程序和终端都必须了解这些字节是Latin-1的含义。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 标准::字符串::空的未定义符号错误;Mac OS High Sierra 上的 c++ 标准方法链接错误
- 在OS X WTIH G 上编译:架构X86_64的未定义符号
- CMAKE OS X CLION.如何链接自定义动态库
- OS X, CMake, Boost: 未定义的架构符号 x86_64: "boost::system::detail::generic_category_instance"
- C++字符类型值由OS定义
- memalign未在Mac OS X中定义
- 在带有胖库的 OS X 上用于架构x86_64的未定义符号
- Mac OS X 中未定义的引用_cblas_dgemm
- Cuda - OS X x86_64架构的未定义符号
- POCO链接错误,OS X 10.11.2上体系结构x86_64的未定义符号
- 在OS X上使用g++-5编译-体系结构x86_64的未定义符号
- 在Mac OS X 10.11中的c++中未定义_main
- 为OS X搜索可以使用自定义gcc安装的C/ c++ IDE
- 在Mac OS X上共享一个c++库,这样我就可以在mySQL中添加用户定义的函数
- 在Mac OS X 10.6.8的gcc-4.2.1中不存在strnlen -如何定义它
- 如何使OS X Cocoa应用程序从它所在的文件夹加载自定义框架
- g++:Mac OS X上的链接器问题-体系结构x86_64的未定义符号