C++string to int in a variety of ways
LJT_Always_AC · · 算法·理论
转载地址
talk is cheap,show me the code.
一一码农
在此列举几种常见代码
1.把string一位一位放入数字
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
using namespace std;
int Stoi(string t)
{
int ans = 0;
int len = t.size();
for (int i = 0; i < len; i++)
{
int x = t[i] - '0';
ans = ans * 10 + x;
}
return ans;
}
2.用stringstream流读入string,再读出到int类型上
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
#include <sstream>
using namespace std;
int StoI(string t)
{
stringstream sin;
sin << t;
int d;
sin >> d;
return d;
}
3.istringstream流读入int类型
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
#include <sstream>
int StrtoInt(string str)
{
istringstream ss(str);
int num;
ss >> num;
return num;
}
4.C语言的sscanf
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
#include <stdio.h>
int StrtoInt(string str)
{
int num;
sscanf(str.c_str(), "%d", &num);
/*由于sscanf是C语言函数,需要调用string
自带的c_str()函数转成const char*(char 数组)*/
return num;
}
5.C语言的atoi
#include <stdlib.h>
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
int StrtoInt(string str)
{
return atoi(str.c_str());
// 同sscanf
}
6.C++的to_string
#include <string>
int StrtoInt(string str)
{
return to_string(str);
}
总结
不推荐sscanf,atoi,它们是C语言函数
更推荐to_string,stringstream,istringstream这些C++原生函数
废话
2025年了祝大家