c++使用stl比较包含中英文的字符串
时间: 2023-12-30 10:05:52 浏览: 31
在 C++ 的 STL 中,可以使用 std::wstring 和 std::wstring_view 类型来表示 Unicode 编码的字符串,并且可以使用 std::locale 类型来设置本地化环境,以正确处理中文字符。下面是一个示例代码:
```c++
#include <iostream>
#include <string>
#include <locale>
int main() {
std::wstring str1 = L"你好世界";
std::wstring str2 = L"hello world";
std::locale loc("");
// 按照 Unicode 编码比较字符串
if (str1.compare(str2) == 0) {
std::wcout << "相等" << std::endl;
} else {
std::wcout << "不相等" << std::endl;
}
// 比较字符串的一部分
std::wstring_view str1_view(str1);
std::wstring_view str2_view(str2);
if (str1_view.substr(0, 2).compare(str2_view.substr(0, 2)) == 0) {
std::wcout << "前两个字符相等" << std::endl;
} else {
std::wcout << "前两个字符不相等" << std::endl;
}
return 0;
}
```
这个示例代码中,我们使用了 std::wstring 类型来表示字符串,并且使用了 std::locale 类型来设置本地化环境,以正确处理中文字符。在比较字符串时,我们使用了 std::wstring 的 compare 函数来比较两个字符串是否相等。如果要比较字符串的一部分,则可以使用 std::wstring_view 类型来表示子字符串,并且使用 substr 函数来获取子字符串,然后再使用 compare 函数来比较子字符串是否相等。