【C++】5-1.12 c++14的字符串字面量

【C++】5-1.12 c++14的字符串字面量

  • C++11 原始 字符串字面量
  • C++14 字符串字面量

C++11 原始 字符串字面量

C++11引入了Raw String literals;
翻译过来为“原始”字符串字面量 或 “生”字符串字面量;

语法:

// 两个相同的分隔符中间通过括号插入原始字符,同时最左侧有字符R标志!
//delimiter是分隔符
//raw_characters原始字符 
R "delimiter( raw_characters )delimiter"

示例:

#include
#include 

int main()
{
     
	const char* s1 = R"(csdn
jn10010537)";
	const char* s2 = "csdn\njn10010537";
	const char* s3 = R"(csdn\njn10010537)";
	const char* s4 = R"ABC(csdn\njn10010537)ABC";

	std::cout << ">>>[1-1]原始字符串字面量的长度:"<< strlen(s1) << std::endl;//获取char*的长度
	std::cout << ">>>[1-2]原始字符串字面量的长度:" << strlen(s2) << std::endl;//获取char*的长度
	std::cout << ">>>[1-3]原始字符串字面量的长度:" << strlen(s3) << std::endl;//获取char*的长度
	std::cout << ">>>[1-4]原始字符串字面量的长度:" << strlen(s4) << std::endl;//获取char*的长度
	std::cout << ">>>[2-1]s1=" << s1 << std::endl;
	std::cout << ">>>[2-2]s2=" << s2 << std::endl;
	std::cout << ">>>[2-3]s3=" << s3 << std::endl;
	std::cout << ">>>[2-4]s4=" << s4 << std::endl;
	std::cout << ">>>[3](s1 == s2):" << (s1 == s2) << std::endl;
	std::cout << ">>>[4](s2 == s3):" << (s2 == s3) << std::endl;
	std::cout << ">>>[5](s3 == s4):" << (s3 == s4) << std::endl;
	std::cout << ">>>[6](s2 == s4):" << (s2 == s4) << std::endl;
	return 0;
}

总结:
原始字符串字面量(Raw String literals)在程序代码中写成什么样子,输出之后就是什么样子;
原始字符串字面量(Raw String literals)中的换行、双引号等特殊字符不转移,即没有特殊意思,就是字符;

C++14 字符串字面量

字符串字面量:String Literals;
C++14 将运算符 ""s 进行了重载,赋予了它新的含义:
使得用这种运算符括起来的字符串字面量,自动变成了一个 std::string 类型的对象。

即在c++14标准中:
std::string{ “csdn:jn10010537” }与"csdn:jn10010537"s写法是等价的;

示例:

#include 
#include 
#include 
using namespace std::string_literals;//使用运算符  ""s 进行了重载,必须引入string_literals中的函数;
int main() {
     
	auto str1 = "csdn:jn10010537"s;               //str1是std::string类型;
	std::cout << "[1]str1类型:"<<typeid(str1).name() << std::endl;
	std::cout << "[2]str1.size():" << str1.size()<< std::endl;

	auto str2 = std::string{
      "csdn:jn10010537" };
	std::cout << "[3]str2类型:"<<typeid(str2).name() << std::endl;
	std::cout << "[4]str2.size():" << str2.size() << std::endl;

	auto str3 = "csdn:jn10010537";               // str3是const char* type
	std::cout << "[5]str3类型:" << typeid(str3).name() << std::endl;
	std::cout << "[6]str3.size():" << strlen(str3) << std::endl;
}

运行如下:
【C++】5-1.12 c++14的字符串字面量_第1张图片

你可能感兴趣的:(C++)