
【C++】详解 to_string 与 stoi 函数(整数转字符串-字符串转整数)
·
目录
一、前言
想必大家在做 LeetCode 算法题的时候会经常看到有使用 to_string 和 stoi 处理字符串,由于自己对这个类不是很了解,查了资料在这里记录一下。
所以本文通过收集资料将其进行总结,主要介绍如何使用 to_string 和 stoi 处理在算法练习或竞赛中遇到的输入输出问题。
二、什么是 to_string - stoi
stoi(),to_string 这两个函数都是对字符串处理的函数,前者是将字符串转化为十进制 int 类型,最后一个是将十进制类型 int、double 等转化为string。
头文件都是:#include <string>
三、to_string
✨作用
将整数转换为字符串
功能:将数字常量(int,double,long等)转换为字符串(string),返回转换好的字符串
✨测试代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int num = 123456789;
string s = to_string(num); // "123456789"
cout << s << endl;
return 0;
}
四、stoi
✨作用
将 n 进制的字符串转化为十进制
stoi(字符串,起始位置,n进制(默认10进制)),将 n 进制的字符串转化为十进制
✨测试代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str = "100";
int x = stoi(str, 0, 2); //将二进制"100"转化为十进制x
cout << x << endl;
return 0;
}
五、力扣常考面试题
✨ 例题 1
例题1 :反转两次数字
链接:反转两次数字
class Solution {
public:
bool isSameAfterReversals(int num)
{
if(num==0)
{
return true;
}
// 第一次反转
string s = to_string(num);
reverse(s.begin(),s.end());
int len1 = stoi(s);
// 第二次反转
string s1 = to_string(len1);
reverse(s1.begin(),s1.end());
int len2 = stoi(s1);
// 判断
if(len2==num)
{
return true;
}
else
{
return false;
}
}
};
✨例题 2
题目:整数反转
链接:整数反转
class Solution {
public:
int reverse(int x)
{
// to_string 函数的主要作用是将 整形 转换为 字符串
string s = to_string(x);
int l = 0;
// 考虑 负数
if(s[l]=='-')
{
l++;
}
// 将 数据部分 进行反转
std::reverse(s.begin()+l,s.end());
// INT_MAX 和 INT_MIN 是C++内置的常量
const int k1 = INT_MAX,k2 = INT_MIN;
string t1 = to_string(k1),t2 = to_string(k2);
if(s[0]=='-')
{
if(s.size()==t2.size() && s > t2)
{
return 0;
}
}
else
{
if(s.size()==t1.size() && s > t1)
{
return 0;
}
}
// stoi() 将字符串转换为 整形
x = stoi(s);
return x;
}
};
六、共勉
以下就是我对 to_string 与 stoi 函数 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++ vector 类的理解,请持续关注我哦!!!
更多推荐
所有评论(0)