← TCL中文教程

推荐答案 测试一下

2.12 string toupper string ?first? ? last?

2.12 string toupper string ?
问答题 中等 笔试真题问答题

参考答案

题目考察C++中字符串转换为大写的方法。string类本身没有直接提供toupper成员函数,通常使用STL算法std::transform结合std::toupper实现。典型写法:std::transform(s.begin(), s.end(), s.begin(), ::toupper);。其中前两个参数指定输入范围(s.begin()到s.end()),第三个参数指定输出起始位置(此处覆盖原字符串),第四个参数是字符转换函数。注意:::toupper表示全局命名空间下的toupper,避免与std::toupper重载冲突。另一种方法是使用范围for循环逐个字符转换:for (char &c : s) c = std::toupper(static_cast<unsigned char>(c));。需注意两点:1)toupper参数应为unsigned char类型,否则当char为有符号且传入负值时可能导致未定义行为;2)toupper的行为受当前locale影响,默认基于C locale,若需支持多语言可设置locale。常见错误:忘记std::transform的头文件<algorithm>;误用string的成员函数(如s.toupper()不存在);忽略迭代器边界;未包含<cctype>。

涉及知识点

  • std::transform算法用法
  • std::toupper函数与unsigned char转换
  • 迭代器范围表示与字符串操作
  • locale对字符转换的影响
  • 头文件包含<algorithm>和<cctype>
← 上一题
登录后反馈错题
下一题 →