当前位置: 首页 > news >正文

C++中的stoi和to_string函数详解:字符串与数值的高效转换工具

        在C++中,stoito_string是两个常用的字符串与数值类型转换函数,属于C++11标准引入的实用工具。


目录

一、stoi函数:将字符串转换为整数

函数原型

功能与特性

基本转换:

异常处理:

进制转换:

二、to_string函数:将数值转换为字符串

函数原型

功能与特性

基本转换:

浮点数处理:

大数值处理:

三、对比与注意事项

四、总结


一、stoi函数:将字符串转换为整数

函数原型

#include <string>
int stoi(const string& str, size_t* pos = 0, int base = 10);
  • 参数

    • str:待转换的字符串。

    • pos(可选):输出参数,记录转换结束的位置(即第一个非数字字符的索引)。若不需要可设为nullptr

    • base(可选):转换的进制(2~36),默认为十进制。

  • 返回值:转换后的整数。

功能与特性

  1. 基本转换

    • 从字符串开头解析数字,直到遇到第一个无效字符或字符串结束。

    • 示例:

      string s1 = "123";
      int num1 = stoi(s1);  // num1 = 123
      
      string s2 = "123abc";
      int num2 = stoi(s2);  // num2 = 123(忽略"abc")
  2. 异常处理

    • 若字符串不以数字开头(如"abc123"),抛出std::invalid_argument异常。

    • 若转换结果超出int范围(如"2147483648"),抛出std::out_of_range异常。

    • 示例:

      try {
          int num = stoi("abc123");
      } catch (const invalid_argument& e) {
          cout << "错误:字符串格式无效" << endl;
      } catch (const out_of_range& e) {
          cout << "错误:数值超出int范围" << endl;
      }
  3. 进制转换

    • 支持二进制、十六进制等。

    • 示例:

      string s3 = "1010";
      int num3 = stoi(s3, nullptr, 2);  // 二进制转十进制,num3 = 10

二、to_string函数:将数值转换为字符串

函数原型

#include <string>
string to_string(int value);
string to_string(double value);  // 其他重载:long, float, unsigned等
  • 参数:数值类型(如intdoublelong等)。

  • 返回值:数值的字符串表示。

功能与特性

  1. 基本转换

    • 将数值直接转换为对应的十进制字符串。

    • 示例:

      int num = 456;
      string s1 = to_string(num);  // s1 = "456"
      
      double d = 3.14;
      string s2 = to_string(d);    // s2可能为"3.140000"(取决于编译器)
  2. 浮点数处理

    • C++标准未规定浮点数的具体输出格式,不同编译器可能结果不同。

    • 若需精确控制浮点格式(如保留两位小数),应使用std::ostringstream

      #include <sstream>
      double d = 3.1415;
      ostringstream oss;
      oss << fixed << setprecision(2) << d;  // 输出两位小数
      string s = oss.str();  // s = "3.14"
  3. 大数值处理

    • 支持大范围数值(如long long)的转换。

    • 示例:

      long long big_num = 123456789012345;
      string s3 = to_string(big_num);  // s3 = "123456789012345"

三、对比与注意事项

特性stoito_string
方向字符串 → 数值数值 → 字符串
异常可能抛出invalid_argumentout_of_range无异常
进制支持支持(2~36)仅十进制
浮点数控制不适用需手动格式化(如ostringstream

四、总结

  • stoi:用于将字符串转换为整数,需注意字符串格式和数值范围,建议配合异常处理使用。

  • to_string:用于将数值转换为字符串,简单易用,但浮点数的格式需通过其他方式控制。

        这两个函数极大简化了字符串与数值之间的转换,是C++开发中处理输入输出和数据序列化的基础工具。

相关文章:

  • C++ 面向对象程序设计 - 学习笔记(持续更新中)
  • strstr!!!
  • 【信息系统项目管理师】【八大绩效域】知识点整合图
  • 管家婆工贸ERP PR010.任务单批量打印
  • (自用)yolo算法学习
  • vue3:i18n的使用
  • 信息系统运行管理员教程3--信息系统设施运维
  • Android开发技能 - Perfetto系列
  • Arm Linux ceres库编译
  • C/C++蓝桥杯算法真题打卡(Day5)
  • 从边缘到核心:群联云防护如何重新定义安全加速边界?
  • 区块链驱动金融第三章——深入解析比特币的运行机制
  • Spring IOC深入解析:从原理到实践
  • OpenAI流式解析
  • 【C++】入门
  • JavaWeek3-泛型,树和集合List接口
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • AF3 identity_rot_mats函数解读
  • CMS网站模板设计与用户定制化实战评测
  • Excel第41套全国人口普查
  • 玉渊谭天:美方多渠道主动接触中方希望谈关税
  • 2025五一档首日电影票房破亿
  • 深交所修订创业板指数编制方案,引入ESG负面剔除机制
  • 张元济和百日维新
  • 体坛联播|利物浦提前4轮夺冠,安切洛蒂已向皇马更衣室告别
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播