答案:C++中字符大小写转换常用tolower和toupper函数,处理字符串时推荐使用transform算法。包含cctype头文件后,可对单个字符调用tolower/toupper进行转换,返回int类型需转回char;遍历String时可通过引用逐个修改字符;更简洁的方式是用<algorithm>中的transform结合::tolower或::toupper实现整体转换,注意使用全局作用域符避免重载冲突,非字母字符会原样保留。

在C++中,将字符转换为大写或小写主要依赖于标准库中的函数。处理单个字符时,tolower 和 toupper 是最常用的方法,它们定义在 cctype 头文件中(对应c语言的 ctype.h)。
使用 tolower 和 toupper 转换单个字符
这两个函数参数是整型(int),但通常传入一个 char 类型的字符。返回值是转换后的字符对应的 ASCII 值(也以 int 形式返回),可以直接赋值给 char 变量。
注意:如果传入非字母字符,函数会原样返回该字符,不会出错。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <iostream><br> #include <cctype> // 必须包含这个头文件<br> using namespace std;<br><br> int main() {<br> char ch1 = 'a';<br> char ch2 = 'B';<br><br> cout << (char)toupper(ch1) << endl; // 输出 A<br> cout << (char)tolower(ch2) << endl; // 输出 b<br><br> return 0;<br> }
注意强制类型转换 (char),因为函数返回 int,但我们要的是字符形式输出。
遍历字符串实现整体转换
对整个字符串进行大小写转换,需要逐个字符处理。可以使用下标或迭代器遍历 string 对象。
示例:将字符串全部转为大写
#include <iostream><br> #include <cctype><br> #include <string><br> using namespace std;<br><br> int main() {<br> string str = "Hello World!";<br><br> for (char &c : str) {<br> c = toupper(c);<br> }<br><br> cout << str << endl; // 输出 HELLO WORLD!<br> return 0;<br> }
使用引用(&c)可以直接修改原字符串中的每个字符,避免只修改副本。
使用 transform 算法(更简洁的方式)
C++ 标准库还提供了 std::transform,结合 toupper 或 tolower 可以更优雅地完成转换。
示例:用 transform 将字符串转小写
#include <iostream><br> #include <algorithm><br> #include <cctype><br> #include <string><br> using namespace std;<br><br> int main() {<br> string str = "C++ Programming";<br><br> transform(str.begin(), str.end(), str.begin(), ::tolower);<br><br> cout << str << endl; // 输出 c++ programming<br> return 0;<br> }
这里使用了全局作用域操作符 ::tolower,确保调用的是C风格的 tolower 函数,而不是可能重载的版本。
基本上就这些。单字符用 tolower/toupper,字符串推荐用 transform 配合算法,简洁又安全。记得包含必要的头文件,避免编译错误。


