Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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+中的字符串文本中写入unicode字符可以吗+;_C++_Visual Studio_Visual C++_Unicode - Fatal编程技术网

C++ 在C+中的字符串文本中写入unicode字符可以吗+;

C++ 在C+中的字符串文本中写入unicode字符可以吗+;,c++,visual-studio,visual-c++,unicode,C++,Visual Studio,Visual C++,Unicode,可以编写以下代码吗 const char* str = "§some-text"; 如果源文件是以UTF-8编码保存的,str是否会包含§字符的正确UTF-8表示形式 或者,编写它的唯一方法是使用带前缀的字符串文字吗?是否可以在源代码中使用Unicode字符(而不仅仅是字符串文字)由实现定义。可移植的唯一方法是坚持使用“基本源字符集”中的字符,并使用u8“\u00a7some text” [法律阶段]/1: 物理源文件字符以实现定义的方式映射到基本源字符集(为行尾指示符引入新行字符),如有必要

可以编写以下代码吗

const char* str = "§some-text";
如果源文件是以UTF-8编码保存的,
str
是否会包含
§
字符的正确UTF-8表示形式


或者,编写它的唯一方法是使用带前缀的字符串文字吗?

是否可以在源代码中使用Unicode字符(而不仅仅是字符串文字)由实现定义。可移植的唯一方法是坚持使用“基本源字符集”中的字符,并使用
u8“\u00a7some text”

[法律阶段]/1:

物理源文件字符以实现定义的方式映射到基本源字符集(为行尾指示符引入新行字符),如有必要。接受的物理源文件字符集由实现定义。不在基本源字符集(2.3)中的任何源文件字符都将替换为指定该字符的通用字符名。(实现可以使用任何内部编码,只要源文件中遇到的实际扩展字符和源文件中表示为通用字符名的同一扩展字符(例如,使用\uxxx表示法)被等效处理,除非此替换以原始字符串文字还原。)

“基本源字符集”是:

基本源字符集由96个字符组成:空格字符、代表水平制表符、垂直制表符、换行符和新行的控制字符,以及以下91个图形字符:

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O p Q R S T U V W X Y Z

0123456789

_{}[]#()<>%:;.?*+-/^&| ~!=“'


这是我在C++中处理奇怪的源代码的知识。我不知道,但是这是我的猜测:字符串被解析,然后转换成内部编码。例如,UTF16中的源文件可能被转换成YACE(我刚刚发明的另一个字符编码)。内部。在这种情况下,UTF-16中组成
a
的两个字节成为YACE中
a
的X个字节数。我假设
\u00a7
成为Unicode字符段符号,然后将这些字节转换为YACE中的相应字符。如果使用
u8
,则字节为UTF-8,并且不是YACE(编译器的内部编码)。假设您的编译器的内部编码为UTF-8,则无论是否存在
u8
,它的功能可能完全相同。@frozenhart[lex.phases]/5“每个源字符集成员在一个字符文本或字符串文本中,以及字符文字或非原始字符串文字中的每个转义序列和通用字符名,都被转换为执行字符集的相应成员。“在某种程度上支持我的猜测。@Frozenhart如果使用
u8
literal,@Frozenhart[lex.charset]/3描述了作为基本执行字符集的实现定义超集的执行字符集,[lex.string]/9说:“对于UTF-8字符串文字,对象表示(3.9)的每个后续元素都具有字符串UTF-8编码的相应代码单元的值。“除了答案中引用的映射之外,它没有再次提到它,但它显然必须从其内部编码转换为UTF-8,否则
u8
文本是无用的。当您保存一个带有非UTF8字符的文件时,Visual Studio将提示您更改编码,您会知道