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

数值类型和字符串之间的转换

在C++11中提供了专门的数值类型和字符串类型之间的转换的转换函数。

数值转换为字符串

使用to_string()方法可以将各种数值类型转换为字符串类型,这是一个重载函,函数声明位于头文件中,函数原型如下:

// 头文件 <string>
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

用例:

#include <iostream>
#include <string>
using namespace std;//数值传字符串类型
void numberToString() {long double dd = 3.1315926789;string pi = "pi is " + to_string(dd);string love = "love is " + to_string(13.14);cout << pi << endl;cout << love << endl << endl;
}
int main() {numberToString();system("pause");return 0;
}

输出结果:

pi is 3.131593
love is 13.140000

字符串转换为数值

C++针对于不同的类型提供了不同的函数,通过调用这些函数可以将字符串类型转换为对应的数值类型。

// 定义于头文件 <string>
int       stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );
long      stol( const std::string& str, std::size_t* pos = 0, int base = 10 );
long long stoll( const std::string& str, std::size_t* pos = 0, int base = 10 );unsigned long      stoul( const std::string& str, std::size_t* pos = 0, int base = 10 );
unsigned long long stoull( const std::string& str, std::size_t* pos = 0, int base = 10 );float       stof( const std::string& str, std::size_t* pos = 0 );
double      stod( const std::string& str, std::size_t* pos = 0 );
long double stold( const std::string& str, std::size_t* pos = 0 );

其中参数含义:

​ str:要转换的字符串。

​ pos:传出参数,记录从哪个字符开始无法继续进行转化;比如 123a32,就是在a的时候无法继续转换,传出位置就是3,即pos为a的地址。】

​ base:用于指明前面参数str的进制(是说str是几进制,转换后的结果都是10进制) 若base为0,则自动检测数值进制(若前缀为0,则为八进制,若前缀为0x或0X,则为十六进制,否则为十进制。

这些函数虽然都有多个参数,但是除去第一个参数外其他都有默认值,一般情况下使用默认值就能满足需求。

关于函数的使用也给大家提供了一个例子,示例代码如下:

#include <iostream>
#include <string>
using namespace std;//字符串转数值类型
void stringToNumber() {string str_dec = "2022.02.04, Beijing Winter Olympics";string str_hex = "40c3";string str_bin = "-10010110001";string str_auto = "0x7f";size_t sz; // size_t是c++标注库中定义的类型,本质是无符号整型;专门用来表示:对象大小、内存大小、字符串长度、数组下标。int i_dec = stoi(str_dec, &sz);int i_hex = stoi(str_hex, nullptr, 16);int i_bin = stoi(str_bin, nullptr, 2);int i_auto = stoi(str_auto, nullptr, 0); //写0是让计算机自己推导。cout << "..... sz = " << sz << endl;cout << str_dec << ": " << i_dec << endl;cout << str_hex << ": " << i_hex << endl;cout << str_bin << ": " << i_bin << endl;cout << str_auto << ": " << i_auto << endl;
}int main() {stringToNumber();system("pause");return 0;
}

输出结果:

..... sz = 4
2022.02.04, Beijing Winter Olympics: 2022
40c3: 16579
-10010110001: -1201
0x7f: 127

所以转换过程就是 转换到不能转换的字符停止。

http://www.jsqmd.com/news/435472/

相关文章:

  • Java Spring Boot 修改yml配置加载顺序规则
  • 分析2026年全国口碑好的跨境电商海外仓服务,海云汇亮点多 - mypinpai
  • Anything LLM+LM Studio+SearXNG实现私有模型开启联网功能
  • offline_download_processor.cpp中auto info = std::make_sharedOfflineVerifyInfo(check_info);的疑问
  • 聊聊2026年跨境电商海外仓服务,全国口碑好的公司怎么选择 - 工业设备
  • 接口设计之道: RPC 与 RESTful 的抉择与融合
  • IntelliJ IDEA 2026.1 EAP 1发布:新特性很给力了!
  • ERROR 1129 (HY000): Host xxx is blocked because of many connection errors
  • 开源Java文件上传组件如何扩展JSP实现多文件拖拽上传?
  • 2026年株洲推荐抖音投流运营企业排名,靠谱服务大揭秘 - 工业品牌热点
  • Rocky9的PXE服务器上安装一个web服务器
  • 2026长期染发,不伤身体的染发膏推荐 - 品牌排行榜
  • 2026网络安全应届生、春招面试必看教程!分享最近一次渗透测试岗位面试经验
  • 研究生毕业论文降AI率攻略:省时省钱的实用方案
  • 探寻2026年靠谱的劳动纠纷律师,北京市中闻律师事务所实力不容小觑 - 工业推荐榜
  • 2026年上海家电维修公司综合实力TOP5深度解析 - 2026年企业推荐榜
  • 婶可忍叔不可忍的AutoMapper,你还用吗?
  • 教育行业站群如何用Java定制文件上传下载的权限控制与日志审计?
  • 知网vs维普:毕业论文AIGC检测结果为什么差这么多?
  • 介绍了 Senparc.AI 所支撑的底层能力(持续更新中),从这个系列开始,我们将逐步探索其强大的扩展和落地能力。 本文介绍的案例 ...
  • 探讨2026年气泡纸压花机品牌选购,购买后交货时间要了解 - 工业品网
  • 2026喷雾干燥机采购白皮书:厂家排名、品牌梯队与实力供应商深度解析 - 品牌推荐大师1
  • AtCoder Weekday Contest 0010 Beta题解(AWC 0010 Beta A-E)
  • 2026年口碑好的全自动缓冲纸袋机制造厂推荐 售后有保障 - myqiye
  • 改变文档修改时间的 6 种实用技巧,无需额外工具
  • 文档的修改日期能改吗?快速改文档修改日期技巧
  • 聊聊板材存放架靠谱厂家,哪家性价比高且口碑好 - 工业设备
  • 振动流化床干燥机定制化解决方案:国内三家技术型厂家的核心竞争力分析 - 品牌推荐大师
  • SageMaker算法如何推动机器学习民主化
  • H2O-3反序列化漏洞分析(CVE-2025-6507CVE-2025-6544)