lab2&3

  1. ASCii中小写字母比大写字母大32;(可用于大小写转换)

  2. 如何遍历字符串string中的每一个字符:

    1. 【】法:str[i]

    2. 范围-based for循环(由于遍历容器)

      int main() {
          std::string str = "hello";
      
          for (char c : str) {
              std::cout << c << std::endl;  // 访问每个字符
          }
      
          return 0;
      }
      
    3. 迭代器

      int main() {
          std::string str = "hello";
      
          for (auto it = str.begin(); it != str.end(); ++it) {
              std::cout << *it << std::endl;  // 访问每个字符
          }
      
          return 0;
      }
      

    总结对比

    方法 优点 缺点 适用场景
    下标运算符 [] 直观、性能高、支持随机访问 需要手动管理索引、代码冗长 需要随机访问或高性能场景
    范围-based for 循环 简洁、安全、易读 不支持随机访问、需要 C++11 现代 C++ 代码中推荐使用
    迭代器 灵活、通用、支持随机访问 语法复杂、代码冗长 需要灵活操作或兼容多种容器时
    C 风格字符串(char* 兼容 C 代码、性能高 不安全、代码冗长、不支持 C++ 特性 与 C 语言交互或高性能场景
    std::for_each 函数式风格、可复用、清晰 语法复杂、性能稍低 函数式编程风格或逻辑分离场景
    Lambda 表达式 简洁、灵活、支持捕获外部变量 语法复杂、性能稍低 现代 C++ 代码中推荐使用