C艹中的string字符串

发布于 2024-04-09  46 次阅读


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编码
QQ:2219349024
最后更新于 2024-04-09