C++ 当在C+内撤消CPP线路拼接时+;0x原始字符串,是否需要一致性实现来保留原始换行序列?

C++ 当在C+内撤消CPP线路拼接时+;0x原始字符串,是否需要一致性实现来保留原始换行序列?,c++,c++11,c-preprocessor,rawstring,C++,C++11,C Preprocessor,Rawstring,C++0x的最新草案n3126说: 删除紧跟在新行字符后面的反斜杠字符(\)的每个实例,将物理源行拼接成逻辑源行 在原始字符串文字的r-char序列中,在 阶段1和2(三角图、通用字符名和行拼接)将恢复 技术上,这意味着C++预处理器只识别一个后跟,然后是换行符,但是我知道一些C++实现也允许Windows或经典的MAC风格的行结尾。 是否需要C++0x的一致性实现来保留原始字符串的r-char序列中紧跟反斜杠字符\之后的换行序列?也许更好的问题是:Windows C++0x编译器是否希望用“

C++0x的最新草案n3126说:

删除紧跟在新行字符后面的反斜杠字符(\)的每个实例,将物理源行拼接成逻辑源行

在原始字符串文字的r-char序列中,在 阶段1和2(三角图、通用字符名和行拼接)将恢复

技术上,这意味着C++预处理器只识别一个后跟,然后是换行符,但是我知道一些C++实现也允许Windows或经典的MAC风格的行结尾。


是否需要C++0x的一致性实现来保留原始字符串的r-char序列中紧跟反斜杠字符
\
之后的换行序列?也许更好的问题是:Windows C++0x编译器是否希望用
“\\\r\n”
而不是
“\\\n”
撤消每一行拼接?

翻译阶段1从

物理源文件字符为 映射,在定义的实现中 方式,以基本的源字符 设置(引入换行符) 对于线端指示器)如果 必要的。三角图 序列(2.3)被替换[…]


我将“在阶段1和2(三角图、通用字符名和行拼接)中执行的任何转换”的要求解释为显式地而不是将源文件字符转换为基本源字符集。相反,源字符稍后会转换为执行字符集,并在那里获得换行符。

如果需要特定的行结束序列,可以显式插入它,并使用字符串文字连接:

char* nitpicky = "I must have a \\r\\n line ending!\r\n"
"Otherwise, some other piece of code will misinterpret this line!";

你到底在做什么,你需要知道这一点?@Karl:这很重要,例如在“可移植”代码中,在字符串文本中使用行拼接,然后当代码移动到新平台时,换行符会以某种方式更改为本机样式(例如,因为某些文本编辑器不能很好地处理外来换行符)。在这种特定的情况下,问题变成了,“标准是否保证字符串文本的值,如果保证,又是什么?”。当然,这与“需要知道”不同——人们可以避免使用该功能而不是寻求标准的澄清。@Karl:除了Steve关于可能产生不同字符串文字的观点外,我正在从事一个涉及扫描原始字符串文字的项目。这是我一直在想的事情。