C++:字符串string类使用

C++字符串和C字符串的对比

(1)C语言严格说没有字符串的概念,C字符串其实就是字符数组或字符指针
(2)C++和之后的java等都有字符串,本质是一个class
(3)C++字符串的优势是标准库自带可用于字符串的各种处理算法和方法
(4)C++实际开发中建议使用C++字符串而不是沿用C式字符串

字符串string类使用

    std::string str = "Hello, World!";
    
    // 使用 size() 获取字符串长度
    std::cout << "Size of the string: " << str.size() << std::endl;
    
    // 使用 length() 也可以获取字符串长度
    std::cout << "Length of the string: " << str.length() << std::endl;

    // 获取字符串的最大容量
    std::cout << "Max size of the string: " << str.max_size() << std::endl;

    // 调整字符串大小为 10
    str.resize(10);
    std::cout << "Resized string: " << str <<"|"<< std::endl; // 输出 "Hello, Wor"

    // 获取当前字符串的容量
    std::cout << "Capacity of the string: " << str.capacity() << std::endl;

    // 请求字符串的容量至少为 20
    str.reserve(20);
    std::cout << "Capacity after reserve: " << str.capacity() << std::endl;
    

    
    // 尝试减少字符串的容量
    str.shrink_to_fit();
    std::cout << "Capacity after shrinking: " << str.capacity() << std::endl;
    
    
    // 清空字符串
    str.clear();
    std::cout << "String after clear: " << str << std::endl; // 输出 ""
    
     // 检查字符串是否为空
    if (str.empty()) {
        std::cout << "String is empty." << std::endl;
    } else {
        std::cout << "String is not empty." << std::endl;
    }
  std::string str = "12345";
  int num = std::stoi(str);
  std::cout << "The integer value is: " << num << std::endl;

  str = "9876543210";
  long int num1 = std::stol(str);
  std::cout << "The long integer value is: " << num1 << std::endl;

  str = "4294967295";  // Max value of unsigned int
  unsigned int num2 = std::stoul(str);
  std::cout << "The unsigned integer value is: " << num2 << std::endl;

  str = "9223372036854775807";  // Max value of long long
  long long num3 = std::stoll(str);
  std::cout << "The long long value is: " << num3 << std::endl;

  str = "18446744073709551615";  // Max value of unsigned long long
  unsigned long long num4 = std::stoull(str);
  std::cout << "The unsigned long long value is: " << num4 << std::endl;

  str = "3.14159";
  float num5 = std::stof(str);
  std::cout << "The float value is: " << num5 << std::endl;

  str = "2.718281828459045";
  double num6 = std::stod(str);
  std::cout << "The double value is: " << num6 << std::endl;

  str = "1.4142135623730950488";
  long double num7 = std::stold(str);
  std::cout << "The long double value is: " << num7 << std::endl;

  int num8 = 12345;
  std::string str1 = std::to_string(num8);
  std::cout << "The string representation is: " << str1 << std::endl;

  double num9 = 3.141592653589793238;
  std::wstring wstr = std::to_wstring(num9);
  std::wcout << "The wide string representation is: " << wstr << std::endl;
  return 0;
  std::string str = "Hello";

  // 使用 operator+= 追加字符串
  str += ", World!";
  // 使用 append 方法追加字符串
  str.append(" How are you?");
  std::cout << "String after append: " << str << std::endl;

  // 使用 push_back 方法追加字符 '!'
  str.push_back('!');
  std::cout << "String after push_back: " << str << std::endl;

  // 使用 insert 方法在位置 5 插入字符串 ", World"
  str.insert(5, ", World");
  std::cout << "String after insert: " << str << std::endl;

  // 使用 erase 方法从位置 7 开始删除 6 个字符
  str.erase(7, 6);  // 删除 ", World"
  std::cout << "String after erase: " << str << std::endl;

  // 使用 replace 方法替换从位置 7 开始的 5 个字符为字符串 "Universe"
  str.replace(7, 5, "Universe");
  std::cout << "String after replace: " << str << std::endl;

  // 使用 pop_back 方法删除最后一个字符 '!'
  str.pop_back();
  std::cout << "String after pop_back: " << str << std::endl;

  // 使用 assign 方法将字符串内容替换为 "Goodbye"
  str.assign("Goodbye");
  std::cout << "String after assign: " << str << std::endl;

  std::string str1 = "Hello";
  std::string str2 = "World";

  // 使用 swap 方法交换两个字符串的内容
  str1.swap(str2);

  std::cout << "String 1 after swap: " << str1 << std::endl;
  std::cout << "String 2 after swap: " << str2 << std::endl;

  std::string str = "Hello, World!";

  // 使用 c_str 方法获取 C 字符串等价物的指针
  const char* cstr = str.c_str();
  // 使用 data 方法获取字符数组的指针
  const char* data = str.data();
  std::cout << "C string equivalent: " << cstr << std::endl;
  std::cout << "String data: " << data << std::endl;

  char buffer[20];
  // 使用 copy 方法将字符串的前 4 个字符复制到字符数组中
  str.copy(buffer, 4);
  buffer[4] = '\0';  // 手动添加结尾的 null 字符
  std::cout << "Copied string: " << buffer << std::endl;

  // 从位置 7 开始,长度为 5 的子字符串
  std::string substr1 = str.substr(7, 5);  // "World"
  std::cout << "Substring 1: " << substr1 << std::endl;

  // 从位置 0 开始直到末尾的子字符串
  std::string substr2 = str.substr(0);  // "Hello, World!"
  std::cout << "Substring 2: " << substr2 << std::endl;

  // 从位置 7 开始直到末尾的子字符串
  std::string substr3 = str.substr(7);  // "World!"
  std::cout << "Substring 3: " << substr3 << std::endl;

  std::string str1 = "apple";
  std::string str2 = "banana";

  // 比较字符串大小
  int result1 = str1.compare(str2);

  if (result1 < 0)
    std::cout << "str1 is less than str2" << std::endl;
  else if (result1 == 0)
    std::cout << "str1 is equal to str2" << std::endl;
  else
    std::cout << "str1 is greater than str2" << std::endl;

  // 比较子字符串大小
  int result2 = str1.compare(0, 3, str2, 0, 3);  // 比较 "app" 和 "ban"

  if (result2 < 0)
    std::cout
        << "First 3 characters of str1 are less than first 3 characters of str2"
        << std::endl;
  else if (result2 == 0)
    std::cout
        << "First 3 characters of str1 are equal to first 3 characters of str2"
        << std::endl;
  else
    std::cout << "First 3 characters of str1 are greater than first 3 "
                 "characters of str2"
              << std::endl;

总结

熟悉符串string类相关方法的使用

学习记录,侵权联系删除。
来源:朱老师物联网大课堂

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值