C++中通过std::toupper和std::tolower结合遍历或std::transform可实现字符串大小写转换,适用于ASCII字符;处理非ASCII字符需使用ICU等专用库。

在C++中,将字符串中的所有字符转换为大写或小写是一个常见需求。标准库提供了相关函数来处理单个字符的大小写转换,结合遍历操作即可实现整个字符串的转换。
使用 std::toupper 和 std::tolower
C++中定义在
要对整个字符串进行操作,可以遍历每个字符并应用这些函数:
- 转换为大写:
for (char& c : str) {
c = std::toupper(c);
}
- 转换为小写:
for (char& c : str) {
c = std::tolower(c);
}
使用 std::transform
更简洁的方式是使用
立即学习“C++免费学习笔记(深入)”;
- 转大写示例:
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
- 转小写示例:
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
注意:这里使用::toupper和::tolower调用C标准库函数,确保正确链接。
处理非ASCII字符的注意事项
上述方法适用于ASCII字符。如果字符串包含非ASCII字符(如中文、带重音符号的字母),std::toupper和std::tolower可能无法正确处理。
对于Unicode文本,建议使用专门的库如ICU(International Components for Unicode)进行安全的大小写转换。
基本上就这些。标准方法足够应对大多数英文文本场景,遇到多语言支持时再考虑引入第三方库。










