C++string to int in a variety of ways

· · 算法·理论

转载地址

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年了祝大家