C ++替代操作员表示

2021-04-24 00:06:38

C ++(和C)源代码可以用任何非ASCII 7位字符集写入,其中包含ISO 646:1983不变字符集。但是,几个C ++运营商和拳击器需要在ISO 646代码集之外的字符:{,},[],#,\,^,|,〜。为了能够使用这些符号中的一些或所有不存在的字符编码(例如德国DIN 66003),C ++定义了由ISO 646兼容字符组成的以下备选方案。

有几个运算符和其他使用非ISO646字符的令牌的替代拼写。在所有方面的语言中,每个替代令牌的行为与其主令牌完全相同,除了其拼写(Stringification运算符可以使拼写可见)。两个字母的替代令牌有时被称为#34; DIGRAPHS"

当解析器遇到字符序列且LT; ::随后的角色既不是:nor>,<被自身被视为预处理令牌,而不是作为替代令牌的第一个特征< :。因此,STD :: Vector< :: std :: string> Won'被错误地被视为STD :: Vector [:std :: string&gt ;.

人物&和 !在ISO-646下不变,但无论如何都要为使用这些字符的令牌提供替代方案,以便容纳更多限制性的历史charsets。

相等运算符==没有替代拼写(例如eq),因为在所有支持的Charsets中存在字符=。

在包含文件中的C编程语言中定义相同的单词。ISO646。 H>作为宏。由于在C ++中,这些内置于语言中,C ++版本的< iso646。 H≫,以及< ciso646>,没有定义任何东西。

%:包括&lt; iostream&gt;结构x&lt; %call x()&lt; %%&gt; //析构函数x()&lt; %%&gt; x(const x bitand)=删除; //复制构造函数bool运算符not_eq(const x bitand其他)&lt; %返回此not_eq bitand其他; %&gt; %&gt; ; int main(int argc,char * argv&lt; ::&gt;)&lt; %// lambda带参考 - 捕获:自动readr =&lt; :Bitand:&gt; (const char * name)&lt; %std :: cout&lt;&lt; &#34;你好&#34; &lt;&lt;名称&lt;&lt; &#34;来自&#34; &lt;&lt; argv&lt; :0:&gt; &lt;&lt; &#39; \ n&#39; ; %&gt; ; if(Argc&gt; 1和argv <:1:&gt; not_eq nullptr)&lt; %康普(Argv <:1:&gt;); %&gt;否则&lt;迎接%(&#34; anon&#34;); %&gt; %&gt;

在评论和字符串文字被识别之前解析以下三个字符组(三字符),并且由相应的主要字符替换三台字符的每个外观: 因为三边形是早期处理的,所以诸如//的评论将被执行下一行????? /将有效地解释出下行,以及字符串文字如&#34;输入日期?/ ?? / ??&#34; 被解析为&#34;输入日期\\ ??&#34;