C++ 11 Raw string literal
在C++中, 特别是网络编程或者系统路径相关的代码中,经常要对特殊字符进行转义处理\\, \/, \%
等等这类, 特别还有像正则表达式的描述,那个写出来看着真的是苦不堪言,比如说这样的一个正则((\+|-)?[[:digit:]]+)
, 要是在长一点, 在旧时代的c++中, 恐怕光写这样一个描述正确的正则表达式都可能浪费你大量的事件;好在C++1x已经为我们考虑到了这样的情况; 所以在新的标准中,已经假如了raw string literals的支持, 也就是很多翻译中的“原始字符串常量的”的支持;
syntax:
std::string raw_s = R"input your string here";
example
1 #include <iostream>
2 #include <string>
3
4 using namespace std;
5
6 int main()
7 {
8 string normal_str="First line.\nSecond line.\nEnd of message.\n";
9 string raw_str=R"(First line.\nSecond line.\nEnd of message.\n)";
10 cout<<normal_str<<endl;
11 cout<<raw_str<<endl;
12 return(0);
13 }
example output:
2 sol@sol:~$ ./a.out
3 First line.
4 Second line.
5 End of message.
6
7 First line.\nSecond line.\nEnd of message.\n
8 sol@sol:~$
有了这个特性, 在网络编程或者需要处理这样字符串的开发者估计晚上做梦都会笑一下吧....