推荐使用for循环配合std::tolower(需先转unsigned char)转换字符串为小写,安全清晰兼容性好。

在C++中,将字符串转换为小写或大写最常用的方法是遍历每个字符,调用 std::tolower 或 std::toupper(需包含 ),并配合 std::string 的索引操作或迭代器。注意:这些函数作用于单个 unsigned char 值,直接传入 char 可能在负值时导致未定义行为,因此需先转换为 unsigned char。
转换为小写(使用 for 循环 + tolower)
安全、清晰、兼容性好,推荐日常使用:
#include #include #include // tolower, toupperstd::string toLower(const std::string& s) { std::string result = s; for (size_t i = 0; i < result.length(); ++i) { result[i] = static_cast(std::tolower(static_cast(result[i]))); } return result;}// 使用示例int main() { std::string s = "Hello World! 123"; std::cout << toLower(s) << "n"; // 输出: hello world! 123}
转换为大写(使用范围 for + toupper)
更现代简洁的写法,同样注意 unsigned char 转换:
std::string toUpper(std::string s) { // 传值避免修改原串 for (char& c : s) { c = static_cast(std::toupper(static_cast(c))); } return s;}
就地转换(不创建新字符串)
如果允许修改原字符串,可省去拷贝,提升效率:
立即学习“C++免费学习笔记(深入)”;
直接对原 std::string 对象调用非 const 迭代器或下标 例如:for (char& c : myStr) c = std::toupper(...) 适用于临时处理、性能敏感场景
注意事项与常见坑
std::tolower/toupper 依赖当前 C locale,默认只对 ASCII 字母有效;中文、Unicode 字符需用 ICU 或 std::locale(C++11+)等高级方案 不要写 std::tolower(c)(其中 c 是 char),必须先转 unsigned char,否则 char 为负时行为未定义 这些函数不改变非字母字符(数字、空格、标点),原样保留 STL 没有内置的 std::string::to_lower() 成员函数,切勿误用基本上就这些。标准库方式简单可靠,适合大多数 ASCII 场景。
以上就是C++如何将字符串转换为小写或大写?(代码示例)的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1488678.html
微信扫一扫
支付宝扫一扫