C++11新特性探索:原始字符串字面值(raw string literal)

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 原始字符串字面值(raw string literal)是C++11引入的新特性。

原始字符串字面值(raw string literal)是C++11引入的新特性。


原始字符串简单来说,“原生的、不加处理的”,字符表示的就是自己(所见即所得),引号、斜杠无需 “\” 转义,比如常用的目录表示,引入原始字符串后,非常方便。


格式如下:

R"(原始字符串)";

废话不多说,上代码:


比如显示RedistList目录,用redist_path1显然是错的,C++ 11之前需要用redist_path2这种方式转义,当我们引入原始字符串的话,非常方便。


顺便来个流行的佛祖保佑,永无bug。

#include "stdafx.h"
#include <iostream>
#include<string>
int main()
{
  std::string redist_path1 = "C:\Program Files (x86)\Microsoft.NET\RedistList";
  std::string redist_path2 = "C:\\Program Files (x86)\\Microsoft.NET\\RedistList";
  std::string redist_path3 = R"(C:\Program Files (x86)\Microsoft.NET\RedistList)";
  std::string redist_path4 = R"(C:\\Program Files (x86)\\Microsoft.NET\\RedistList)";
  std::cout << "redist_path1: "<< redist_path1 << std::endl;
  std::cout << "redist_path2: " << redist_path2 << std::endl;
  std::cout << "redist_path3: " << redist_path3 << std::endl;
  std::cout << "redist_path4: " << redist_path4 << std::endl;
  std::string fozu = R"(
                            _ooOoo_
                           o8888888o
                           88" . "88
                           (| -_- |)
                            O\ = /O
                        ____/`---'\____
                      .   ' \\| |// `.
                       / \\||| : |||// \
                     / _||||| -:- |||||- \
                       | | \\\ - /// | |
                     | \_| ''\---/'' | |
                      \ .-\__ `-` ___/-. /
                   ___`. .' /--.--\ `. . __
                ."" '< `.___\_<|>_/___.' >'"".
               | | : `- \`.;`\ _ /`;.`/ - ` : | |
                 \ \ `-. \_ __\ /__ _/ .-` / /
         ======`-.____`-.___\_____/___.-`____.-'======
                            `=---='
    )";
  std::cout << fozu << std::endl;
  return 0;
}

编译运行查看结果:

2ec4742bd7034d58adb42cdeb17f89da.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
21 3
|
7天前
|
安全 JavaScript 前端开发
C++一分钟之-C++17特性:结构化绑定
【6月更文挑战第26天】C++17引入了结构化绑定,简化了从聚合类型如`std::tuple`、`std::array`和自定义结构体中解构数据。它允许直接将复合数据类型的元素绑定到单独变量,提高代码可读性。例如,可以从`std::tuple`中直接解构并绑定到变量,无需`std::get`。结构化绑定适用于处理`std::tuple`、`std::pair`,自定义结构体,甚至在范围for循环中解构容器元素。注意,绑定顺序必须与元素顺序匹配,考虑是否使用`const`和`&`,以及谨慎处理匿名类型。通过实例展示了如何解构嵌套结构体和元组,结构化绑定提升了代码的简洁性和效率。
19 5
|
7天前
|
C++ 容器
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
17 1
|
2天前
|
编译器 C语言 C++
|
7天前
|
C语言 C++
【c++】string模拟实现(2)
【c++】string模拟实现(2)
9 0
|
7天前
|
算法 C++
【c++】string模拟实现(1)
【c++】string模拟实现(1)
9 0
|
7天前
|
存储 编译器 C语言
【C++航海王:追寻罗杰的编程之路】string类
【C++航海王:追寻罗杰的编程之路】string类
8 0
|
7天前
|
编译器 C++
【C++】学习笔记——string_5
【C++】学习笔记——string_5
6 0
|
7天前
|
编译器 C语言 C++
【C++】学习笔记——string_4
【C++】学习笔记——string_4
9 0