新闻中心

C++如何将字符串转换为小写或大写?(代码示例)

2025-12-12
浏览次数:
返回列表
推荐使用for循环配合std::tolower(需先转unsigned char)转换字符串为小写,安全清晰兼容性好。

c++如何将字符串转换为小写或大写?(代码示例)

在C++中,将字符串转换为小写或大写最常用的方法是遍历每个字符,调用 std::tolowerstd::toupper(需包含 <cctype></cctype>),并配合 std::string 的索引操作或迭代器。注意:这些函数作用于单个 unsigned char 值,直接传入 char 可能在负值时导致未定义行为,因此需先转换为 unsigned char

转换为小写(使用 for 循环 + tolower)

安全、清晰、兼容性好,推荐日常使用:

#include <iostream>
#include <string>
#include <cctype> // tolower, toupper

std::string toLower(const std::string& s) {
    std::string result = s;
    for (size_t i = 0; i < result.length(); ++i) {
        result[i] = static_cast<char>(std::tolower(static_cast<unsigned char>(result[i])));
    }
    return result;
}

// 使用示例
int main() {
    std::string s = "Hello World! 123";
    std::cout << toLower(s) << "\n"; // 输出: hello world! 123
}

转换为大写(使用范围 for + toupper)

更现代简洁的写法,同样注意 unsigned char 转换:

Songtell Songtell

Songtell是第一个人工智能生成的歌曲含义库

Songtell 164 查看详情 Songtell
std::string toUpper(std::string s) { // 传值避免修改原串
    for (char& c : s) {
        c = static_cast<char>(std::toupper(static_cast<unsigned char>(c)));
    }
    return s;
}

就地转换(不创建新字符串)

如果允许修改原字符串,可省去拷贝,提升效率:

  • 直接对原 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++如何将字符串转换为小写或大写?(代码示例)的详细内容,更多请关注其它相关文章!


# 遍历  # 云抖音推广官方网站入口  # 网站会员推广  # 太仓广告公司网站建设  # 店铺推广网站哪个好做一点  # 进一步优化网站建设工作  # 滨州网站建设的必要性  # 北京seo运营培训机构  # 屈臣氏营销推广  # 神木360推广网站在哪  # 密云区正规网站建设比较  # 适用于  # 推荐使用  # ai  # 第一个  # 迭代  # 边缘  # 性好  # 如何将  # 游戏开发  # 转换为  # 标准库  # stream  # ios  # c++ 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】  铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  使用J*aScript检测输入元素是否包含在特定类中  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  大象笔记网页版入口 印象笔记网页版登录入口  Lar*el 递归关系中排除指定分支的教程  AO3最新官网入口公告_2025AO3镜像站实时查询方法  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  Go语言中高效处理x-www-form-urlencoded表单数据  QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用  qq游戏手机版下载安装_qq游戏移动端入口  Python异步编程实践:使用Binance API构建实时交易数据流  押井守高度称赞《辐射4》:玩了八年都停不下来!  抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  J*aScript 字符串标签转换:使用正则表达式高效替换  铁路12306的积分有效期是多久_铁路12306积分有效期说明  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  高德地图怎么看全景照片_高德地图全景照片浏览教程  Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  京东单号查询入口_京东快递订单追踪入口  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  b站赚钱渠道_b站收益来源  C++如何生成随机数_C++ random库使用方法与范围设置  steam官方网页快速访问 steam账号注册全流程  Golang如何使用new_Go new分配内存机制讲解  NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰  fishbowl官网免费版 fishbowl养鱼网站入口  学习通网页版快速入口 学习通官网网页版直接打开  PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果  Pygame教程:解决用户输入与游戏状态更新不同步问题  b站怎么删除评论_b站评论管理与删除操作  PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  必由学官网首页入口 必由学教师网页版登录指南  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  拼多多赚钱渠道_拼多多收益来源  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  qq游戏免费畅玩入口_qq游戏电脑版快速启动  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  Pandas DataFrame 多条件优先级排序与排名  顺丰国际快递查询 国际件官方查询入口 

搜索