📌  相关文章
📜  将整个字符串转换为小写 c++ (1)

📅  最后修改于: 2023-12-03 15:25:19.871000             🧑  作者: Mango

将整个字符串转换为小写:C++实现

有时候,在字符串处理中,需要将字符串全部转换为小写,以便在比较字符串时忽略大小写的差异。C++中提供了一些库函数和STL算法可以实现这个功能。

使用库函数

C++标准库 <algorithm> 提供了一些字符转换函数,使用 std::transform() 算法可以将字符串中的每个字符应用这些函数来完成字符串转换。下面是使用 std::transform()tolower() 函数将字符串全部转换为小写的示例代码:

#include <algorithm>
#include <cctype>
#include <string>

void toLower(std::string& str)
{
    std::transform(str.begin(), str.end(), str.begin(),
     [](unsigned char c){ return std::tolower(c); });
}

使用方法:

std::string str = "Hello, WORLD!";
toLower(str);
std::cout << str << std::endl;
// 输出:hello, world!
多字节字符处理

如果处理的字符串中包含多字节字符(比如UTF-8编码),那么上述代码就不能正确地工作了。需要使用宽字符集和 std::towlower() 函数来处理。同时需要注意迭代器的类型不能是 std::string::iterator,而是应该使用 std::wstring::iterator。下面是修正版代码:

#include <algorithm>
#include <cwctype>
#include <string>

void toLower(std::wstring& str)
{
    std::transform(str.begin(), str.end(), str.begin(),
     [](wchar_t c){ return std::towlower(c); });
}

使用方法:

std::wstring str = L"Hello, WORLD!"; // 注意L前缀
toLower(str);
wcout << str << endl;
// 输出:hello, world!
结论

以上是将整个字符串转换为小写的两种C++实现方法。可以根据需要选择更适合的方法。如果涉及多字节字符,建议使用宽字符集与 std::towlower() 函数来处理。