当前位置:网站首页>数值类型和字符串之间的转换
数值类型和字符串之间的转换
2022-06-22 14:47:00 【喜欢打篮球的普通人】
1.数值转换为字符串
使用 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;
int main()
{
string pi = "pi is " + to_string(3.1415926);
string love = "love is " + to_string(5.20 + 13.14);
cout << pi << endl;
cout << love << endl;
return 0;
}
- 测试:

2.字符串转换为数值
由于 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:传出参数,记录从哪个字符开始无法继续进行解析,比如: 123abc, 传出的位置为 3
- base:若 base 为 0 ,则自动检测数值进制:若前缀为 0 ,则为八进制,若前缀为 0x 或 0X,则为十六进制,否则为十进制。
这些函数虽然都有多个参数,但是除去第一个参数外其他都有默认值,一般情况下使用默认值就能满足需求。
- eg:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 = "45";
string str2 = "3.14159";
string str3 = "9527 with words";
string str4 = "words and 2";
int myint1 = std::stoi(str1);
float myint2 = std::stof(str2);
int myint3 = std::stoi(str3);
// 错误: 'std::invalid_argument'
// int myint4 = std::stoi(str4);
cout << "std::stoi(\"" << str1 << "\") is " << myint1 << endl;
cout << "std::stof(\"" << str2 << "\") is " << myint2 << endl;
cout << "std::stoi(\"" << str3 << "\") is " << myint3 << endl;
// cout << "std::stoi(\"" << str4 << "\") is " << myint4 << endl;
}
测试:

从上述测试程序可以得出这样的结论,在 C++11 提供的这些转换函数将字符串转换为数值的过程中:如果字符串中所有字符都是数值类型,整个字符串会被转换为对应的数值,并通过返回值返回
如果字符串的前半部分字符是数值类型,后半部不是,那么前半部分会被转换为对应的数值,并通过返回值返回
如果字符第一个字符不是数值类型转换失败
边栏推荐
- Process address space
- Rosbag use command
- #进程地址空间
- 希尔排序的简单理解
- 84. (cesium chapter) movement of cesium model on terrain
- Jenkins automatically triggers compilation by checking code submissions
- New load balancing webclient CRUD
- 【山大会议】WebRTC基础之用户媒体的获取
- [Newman] postman generates beautiful test reports
- [译文] 弥合开源数据库和数据库业务之间的鸿沟
猜你喜欢
随机推荐
"Forget to learn again" shell process control - 38. Introduction to while loop and until loop
米哈游六月社招火热开启!500+岗位,超多HC,就在这个夏天(附内推方式)
快速玩转CI/CD图形化编排
Cve-2022-0847 (privilege lifting kernel vulnerability)
Scala语言学习-06-传名参数、传值参数、传函数参数的区别
Scala language learning-05-a comparison of the efficiency of recursion and tail recursion
推進兼容適配,使能協同發展 GBase 5月適配速遞
Oracle客户端和服务端的区别
C语言学生成绩排名系统
Is SQL analysis query unavailable in the basic version?
使用 zipfile、openpyxl、flask 批量导出excel zip
小白操作Win10扩充C盘(把D盘内存分给C盘)亲测多次有效
Binary search (integer binary)
Fast and accurate point cloud registration based on minimizing 3D NDT distance
Luogu p2466 [sdoi2008] Sue's small ball solution
(pytorch进阶之路二)word embedding 和 position embedding
uni开发微信小程序自定义相机自动检测(人像+身份证)
【山大会议】WebRTC基础之用户媒体的获取
Discourse 新用户可插入媒体的数量
微信小程序头像挂件制作









