答案:C++中常用std::transform结合std::toupper将字符串转为大写,需使用unsigned char避免符号扩展问题,可就地转换或生成新字符串。

在C++中将字符串转换为大写,常用的方法是结合标准库中的 toupper 函数与 std::transform 算法。这种方法简洁、高效,并适用于大多数场景。
使用 toupper 与 transform 转换字符串为大写
std::transform 是 algorithm 头文件中的一个算法,用于对容器中的每个元素执行操作。配合 std::toupper(定义在 cctype 中),可以逐个字符转换为大写。
基本用法如下:
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
int main() {
std::string str = "Hello, World!";
std::transform(str.begin(), str.end(), str.begin(),
[](unsigned char c){ return std::toupper(c); });
std::cout << str << std::endl; // 输出: HELLO, WORLD!
return 0;
}
登录后复制
说明:
立即学习“C++免费学习笔记(深入)”;
- str.begin() 和 str.end() 指定处理范围。
- 第三个参数是输出迭代器,这里复用原字符串位置。
- lambda 表达式封装 std::toupper,确保传入的是 unsigned char 类型,避免符号扩展问题。
为什么使用 unsigned char?
某些平台下,char 可能是带符号类型。如果字符值超过127,直接传给 toupper 可能导致未定义行为。强制转为 unsigned char 可避免此问题。
例如:
标签: 字符串 c++ go ai ios stream 标准库 为什么
还木有评论哦,快来抢沙发吧~