关于C++字符串字面量
```cpp
#include <iostream>
char array1[] = "Foo" "bar";
// same as
char array2[] = { 'F', 'o', 'o', 'b', 'a', 'r', '\0' };
const char* s1 = R"foo(
Hello
World
)foo";//R标识后可以使用源格式输入字符串
// same as
const char* s2 = "\nHello\n World\n";
// same as
const char* s3 = "\n"
"Hello\n"
" World\n";
const wchar_t* s4 = L"ABC" L"DEF"; // ok, same as
const wchar_t* s5 = L"ABCDEF";
const char32_t* s6 = U"GHI" "JKL"; // ok, same as
const char32_t* s7 = U"GHIJKL";
const char16_t* s9 = "MN" u"OP" "QR"; // ok, same as
const char16_t* sA = u"MNOPQR";
const char * sB = u8"lalala""hehe";//ok, same as
const char * sC ="lalalahehe"
//wchar_t:宽字符,在windows平台相当于char16_t,在linux平台相当于char32_t
// const auto* sB = u"Mixed" U"Types";
// before C++23 may or may not be supported by
// the implementation; ill-formed since C++23//本编译器在C++23之后,也不支持
//指定了字面值的类型就可以用auto或auto*代替变量类型,不指定类型默认是char(u8)
const wchar_t* sC = LR"--(STUV)--"; // ok, raw string literal
int main()
{
std::cout << array1 << ' ' << array2 << '\n'
<< s1 << s2 << s3 << std::endl;
std::wcout << s4 << ' ' << s5 << ' ' << sC
<< std::endl;
}
//har16_t和char32_t是对应unicode字符的,通常unicode字符是不会拿来直接做输入输出的,需要转换后才能做输入输出。
using namespace std::string_literals;
std::string s="lalala"s+"lala""leilei";// s返回一个string,可以进行连接
//宽字符输出中文
const auto *chinese=L"啦啦啦";
std::ios::sync_with_stdio(false); // Linux gcc.
std::locale::global(std::locale(""));//这句可选
std::wcout.imbue(std::locale(""));
std::wcout <<chinese<<std::endl;
printf("%ls\n",chinese);
```

浙公网安备 33010602011771号