C艹中的string字符串
在C艹中的话有其自己的string类型即
std::string name = "ranfey";
using namespace std::string_literals;
是C++11中的一种特性,它允许你在代码中直接使用带有s
后缀的字符串字面值,而无需显式地指定命名空间。
具体来说,std::string_literals
命名空间包含了C++11引入的一组用户定义的字面值后缀,用于创建std::string
对象。这些后缀使得字符串字面值的使用更加直观和方便。
例如:
cppCopy codeusing namespace std::string_literals;
int main() {
auto str = "Hello, World!"s; // 使用"s"后缀直接创建std::string对象
return 0;
}
在这个例子中,using namespace std::string_literals;
允许我们直接使用s
后缀来创建std::string
对象,而无需写成std::string
,使得代码更加简洁和易读。
需要注意的是,使用using namespace
可能会引入命名冲突,特别是当引入了多个命名空间时。因此,一般来说,最好只在局部范围内使用using namespace
,或者显式地使用特定的后缀。
在using namespace std::string_literals;
后就可以直接拼接字符串了
std::wstring name0 = L"Cherno"s + L" hello";
std::string name0 = "Cherno"s + " hello";
另外,要想使用printf
来加入字符串要这样
printf("%s \n", name.c_str());
搜索字符的话这样
其中std::string::npos
是默认搜索不到会返回的索引
if (name.find("no") != std::string::npos) {//.find()来返回搜索到的位置
printf("有no");
} else { printf("无"); }
其他C风格的代码可以帮助理解
const char* name = u8"Cherno";//u8前缀表示该字符串使用UTF-8编码
const wchar_t* name2 = L"Cherno";//以宽字符编码(通常是UTF-16)存储(不同的编译器和平台上可能不同)
const char16 t* name3 = u"Cherno";//前缀表示该字符串使用UTF-16编码(无符号的16位整数类型)
const char32_t* name4 = U"Cherno";//前缀表示该字符串使用UTF-32编码
Comments NOTHING