首页 > 其他分享 >1.1稳定性 && 兼容性

1.1稳定性 && 兼容性

时间:2023-02-19 15:13:29浏览次数:26  
标签:兼容性 1.1 text test && 字符串 world include hello

1.1 原始字面量

在 C++11 中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx” 其中()两边的字符串可以省略。原始字面量 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。

比如:编程过程中,使用的字符串中常带有一些特殊字符,对于这些字符往往要做专门的处理,使用了原始字面量就可以轻松的解决这个问题了,比如打印路径:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str = "D:\hello\world\test.text";
    cout << str << endl;
    string str1 = "D:\\hello\\world\\test.text";
    cout << str1 << endl;
    string str2 = R"(D:\hello\world\test.text)";
    cout << str2 << endl;

    return 0;
}

输出的结果为:

D:helloworld    est.text
D:\hello\world\test.text
D:\hello\world\test.text
  • 在 D:\hello\world\test.text 中 \h 和 \w 转义失败,对应的字符会原样输出
  • 在 D:\hello\world\test.text 中路径的间隔符为 \ 但是这个字符又是转义字符,因此需要使用转义字符将其转义,最终才能得到一个没有特殊含义的普通字符 \
  • 在 R"(D:\hello\world\test.text)" 使用了原始字面量 R()中的内容就是描述路径的原始字符串,无需做任何处理

通过测试可以看到,使用原始字面量 R 可以直接得到其原始意义的字符串,再看一个输出 HTML 标签的例子:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str = "<html>\
        <head>\
        <title>\
        海贼王\
        </title>\
        </head>\
        <body>\
        <p>\
        我是要成为海贼王的男人!!!\
        </p>\
        </body>\
        </html>";
    cout << str << endl;
    return 0;
}

在 C++11 之前如果一个字符串分别写到了不同的行里边,需要加连接符,这种方式不仅繁琐,还破坏了表达式的原始含义,如果使用原始字面量就变得简单很多,很强直观,可读性强。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str = R"(<html>
        <head>
        <title>
        海贼王
        </title>
        </head>
        <body>
        <p>
        我是要成为海贼王的男人!!!
        </p>
        </body>
        </html>)";
    cout << str << endl;

    return 0;
}

最后强调一个细节:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str1 = R"(D:\hello\world\test.text)";
    cout << str1 << endl;
    string str2 = R"luffy(D:\hello\world\test.text)luffy";
    cout << str2 << endl;
#if 0
    string str3 = R"luffy(D:\hello\world\test.text)robin";	// 语法错误,编译不通过
    cout << str3 << endl;
#endif

    return 0;
}

测试代码输出的结果为:

D:\hello\world\test.text
D:\hello\world\test.text

通过输出的信息可以得到如下结论:使用原始字面量 R “xxx (raw string) xxx”,()两边的字符串在解析的时候是会被忽略的,因此一般不用指定。如果在()前后指定了字符串,那么前后的字符串必须相同,否则会出现语法错误。


1.2 超长整型long long

1.3 类成员变量的快速初始化

1.4 final关键字的使用

1.5override关键字的使用

1.6对模板右尖括号的优化

1.7 函数模板的默认模板参数

1.8 静态断言static_assert

1.9 异常和noexcept

1.10 字符串和数值类型之间的转换

标签:兼容性,1.1,text,test,&&,字符串,world,include,hello
From: https://www.cnblogs.com/Epiephany/p/17134744.html

相关文章

  • MyBatisPlus映射匹配兼容性
    字段映射与表名映射1、当数据库表名tbl_user与实体类名User不一致时:在实体类上添加:@TableName("tbl_user")packagecom.itheima.domain;importcom.baomidou.mybati......
  • 属性-Yii 基础-深入理解YII2.0(1.1)
    属性(Property)属性用于表征类的状态,从访问的形式上看,属性与成员变量没有区别。你能一眼看出​​$object->foo​​中的foo是成员变量还是属性么?显然不行。但是,成员变......
  • Dapr v1.10.0 版本已发布
    Dapr是一套开源、可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性、微服务、无状态以及有状态等应用程序类型。Dapr能够确保开发人员专注于编写业务......
  • 1.1 Java介绍
    1.1Java介绍Java之父:詹姆斯·高斯林(JamesGosling)。Java三大平台:JavaSE:Java语言的(标准版),用于桌面应用的开发,是其他两个版本的基础。JavaME:Java语言的(小型版......
  • k8s版本1.18升级至1.19.16
    一、master节点升级#1.yum升级kubernetes插件yuminstallkubeadm-1.19.16-0kubelet-1.19.16-0kubectl-1.19.16-0--disableexcludes=kubernetes#2.升级版本到1.19.16......
  • 11.1 应用和硬件无关?
     在C语言等高级编程语言开发的Windows应用中,很少有能直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。 不过,Windows提供了通过应用来间接控制硬件的方......
  • 11.1应用和硬件无关?
       在C语言等高级编程语言开发的Windows应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。   不过,Windows提供了通过应......
  • 2023.01.17 模拟赛小结
    2023.01.17模拟赛小结目录2023.01.17模拟赛小结更好的阅读体验戳此进入赛时思路T1CodeT2CodeT3T4Code正解T1CodeT2CodeT3CodeT4CodeUPD更好的阅读体验戳此进入赛时思......
  • 【保姆级】Python最新版3.11.1开发环境搭建,看这一篇就够了
    工欲善其事必先利其器,在使用Python开发程序之前,在计算机上搭建Python开发环境是必不可少的环节,目前Python最新稳定版本是3.11.1,且支持到2027年,如下图所示本文手把手带你......
  • kubenetes core-dns安装和配置(1.10.13)
    前言:kubernetes把所有的插件统一放在了.../cluster/addons下了从早期的发布的版本看到,2015年1月, kubernetes0.8.x系列版本中.../cluster/addons目录被加入进来.addo......