C++中的字符串字面量
C++中的字符串字面量是由双引号包围的字符序列。它们被视为指向字符数组的指针,其中数组的最后一个元素是空字符。以下是一个字符串字面量的示例:
const char* str = "Hello, World!";
在上面的示例中,“Hello, World!“是字符串字面量。可以在程序中使用字符串字面量来表示文本或字符序列。例如,您可以将它们用作函数参数或将它们赋值给字符数组变量。
需要注意的是,字符串字面量是常量,不允许修改其内容。如果您尝试修改字符串字面量中的任何字符,则会导致编译错误。 比如你想这么搞
const char* str = "Hello, World!";
str[2]='x';
就会报错了
另外,C++11引入了原始字符串字面量,它们由R”()“语法表示,其中括号内的字符序列被视为原始字符串。这意味着在原始字符串中,转义字符不会被解释。以下是一个原始字符串字面量的示例:
const char* raw_str = R"(C:\\Users\\John\\Documents\\)";
在上面的示例中,R”()“中的字符序列被视为原始字符串,其中的反斜杠不需要进行转义。
总之,字符串字面量是C++中常用的表示文本或字符序列的方式,而原始字符串字面量则可以方便地表示包含反斜杠的路径或正则表达式等。
别的char类型
在C++中,除了字符串字面量外,还有其他类型的字符字面量。例如,单引号括起来的字符字面量表示单个字符。例如,‘a’表示字符a,‘0’表示数字0。这些字符字面量可以用作函数参数或赋值给字符变量。
此外,还有一种宽字符字面量,用L"“语法表示。它们与字符串字面量类似,但使用宽字符(wchar_t)而不是普通字符(char)。这些宽字符字面量在处理国际化和本地化问题时非常有用

字符串相加不能直接用+

因为这些事字符串字面量,实际上他们是字符数组,或者字符指针,所以我们不能把两个指针相加
解决方案1

解决方案2

s其实就是个操作函数
字符串字面量在内存中
在C++中,字符串字面量被存储在程序的只读数据区中,并在程序启动时加载到内存中。这意味着它们不能被修改,并且必须使用const char*或const char[]类型的指针来引用它们。
由于字符串字面量是常量,因此它们可以在编译时进行优化。例如,如果两个字符串字面量具有相同的值,则它们可能会共享存储空间,从而减少程序的内存占用。
需要注意的是,如果在程序中使用大量的字符串字面量,则可能会增加程序的内存占用。为了减少内存使用量,应该考虑使用动态分配内存来存储字符串,或者使用字符串流等工具来动态构建字符串。