C++中通过的toupper和tolower函数结合std::transform实现字符串大小写转换,可对ASCII字符进行高效处理,支持原地转换或使用范围for循环自定义操作,但不适用于Unicode字符。

在C++中,对字符串进行大小写转换是一个常见的操作。虽然C++标准库没有直接提供像Python那样简洁的upper()或lower()方法,但我们可以借助头文件中的toupper()和tolower()函数,结合std::transform来高效实现。
1. toupper 与 tolower 函数简介
toupper(int c) 和 tolower(int c) 是定义在头文件中的C风格函数,用于将单个字符转换为大写或小写:
toupper(c):如果c是小写字母(a-z),返回对应的大写字母(A-Z);否则返回原字符。 tolower(c):如果c是大写字母(A-Z),返回对应的小写字母(a-z);否则返回原字符。
注意:这两个函数参数类型是int,通常传入char会自动提升,但处理时应确保字符值在unsigned char范围内,避免未定义行为。
2. 转换整个字符串为大写或小写
要对整个std::string进行大小写转换,最常用的方法是使用std::transform算法:
立即学习“C++免费学习笔记(深入)”;
#include #include #include #include int main() { std::string str = "Hello World!"; // 转换为大写 std::string upper_str = str; std::transform(upper_str.begin(), upper_str.end(), upper_str.begin(), ::toupper); // 转换为小写 std::string lower_str = str; std::transform(lower_str.begin(), lower_str.end(), lower_str.begin(), ::tolower); std::cout << "Original: " << str << "n"; std::cout << "Uppercase: " << upper_str << "n"; std::cout << "Lowercase: " << lower_str << "n"; return 0;}
输出结果:
Original: Hello World!Uppercase: HELLO WORLD!Lowercase: hello world!
关键点:
::toupper 和 ::tolower前面加::是为了明确使用全局命名空间中的C函数,避免与可能的同名函数冲突。 std::transform遍历字符串每个字符,应用指定函数后写回目标位置。
3. 原地转换与自定义处理
如果想直接修改原字符串,可以直接在原str上操作:
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
也可以使用范围for循环,代码更直观:
for (auto& c : str) { c = std::tolower(c);}
这种方式便于添加额外逻辑,比如只转换特定条件的字符。
4. 注意事项
这些函数仅对ASCII字母有效,不支持Unicode(如中文、带重音符号的字符)。 非字母字符(数字、标点等)不会被改变。 确保包含头文件,否则toupper/tolower可能无法找到。基本上就这些。掌握std::transform配合toupper和tolower的用法,就能轻松处理大多数C++字符串大小写转换需求。
以上就是C++ string大小写转换_C++ toupper与tolower用法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1487906.html
微信扫一扫
支付宝扫一扫