Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 谁负责字符、初始值设定项或引号的编码工作?_C++_String_Unicode_Encoding - Fatal编程技术网

C++ 谁负责字符、初始值设定项或引号的编码工作?

C++ 谁负责字符、初始值设定项或引号的编码工作?,c++,string,unicode,encoding,C++,String,Unicode,Encoding,双引号生成字符串文字,单引号创建字符文字 #include<iostream> using namespace std; int main() { char s = 'H'; // [Encoding] printf("%x\n", s); //prints 48 (hexadecimal number) printf("%c\n", s); //prints H [Decoding] return 0; } #包括 使用名称空间std; in

双引号生成字符串文字,单引号创建字符文字

#include<iostream>

using namespace std;

int main() {
    char s = 'H'; // [Encoding]
    printf("%x\n", s); //prints 48 (hexadecimal number) 
    printf("%c\n", s); //prints H [Decoding]
    return 0;
}
#包括
使用名称空间std;
int main(){
字符s='H';//[编码]
printf(“%x\n”,s);//打印48(十六进制数)
printf(“%c\n”,s);//打印H[解码]
返回0;
}
我目前的理解

char
是一种能够保存8位数字的整数类型。定义char s='H'的过程是一个编码过程。它将H编码为Ascii码索引:数字72(0x48),并将其保存在变量中

printf(“%c\n”,s)
中的
%c
实际上是解码过程。根据UTF-8编码/解码规则,它将ascii索引72(0x48)解码为英文字符“H”

现在问题是双引号/单引号

假设

单引号操作符只不过是将字符集群编码到Unicode索引中(而双引号将字符编码到Unicode索引数组中)

问题


我的理解/假设正确吗?如果他们都错了,请指出。

对我来说似乎是正确的,但有一些吹毛求疵:
'
不是运算符,标准不要求实现使用ASCII和/或Unicode。@HolyBlackCat运算符是一个能够操作值或运算符的对象,但是
'
通过将字符编码为数字来操纵字符。所以,也许编码工作是由初始化而不是引号完成的。。我想我可能在一个错误的方向认为这个问题“根据UTF-8编码/解码…”没有ASCII。将Unicode(除转义序列外的任何编码)放在源文件中是自找麻烦。@SLN我认为对“编码是什么”进行推理是没有意义的。编译器执行此操作。编译器使用您告诉它的编码读取源文件(希望是您编写源文件时使用的编码)。对于文字字符,它使用您告诉它的编码将它们转录成字符序列。ASCII本身并没有得到现代编译器(或者源代码和文本编辑器)的广泛支持。请参阅编译器的-fexec charset、/execution charset或等效项。当然,它们有默认值。