专栏文章

C++string to int in a variety of ways

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqc5sgi
此快照首次捕获于
2025/12/04 02:23
3 个月前
此快照最后确认于
2025/12/04 02:23
3 个月前
查看原文
talk is cheap,show me the code.
一一码农

在此列举几种常见代码

1.把string一位一位放入数字
CPP
#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类型上
CPP
#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类型
CPP
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
#include <sstream>
int StrtoInt(string str)
{
	istringstream ss(str);
	int num;
	ss >> num;
	return num;
}
4.C语言的sscanf
CPP
#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
CPP
#include <stdlib.h>
#include <string>
//注意不是string.h(后者是C语言char 数组形式的字符串头文件)
int StrtoInt(string str)
{
    return atoi(str.c_str());
    // 同sscanf
}
6.C++的to_string
CPP
#include <string>
int StrtoInt(string str)
{
	return to_string(str);
}

总结

不推荐sscanf,atoi,它们是C语言函数
更推荐to_string,stringstream,istringstream这些C++原生函数

废话

2025年了祝大家

评论

0 条评论,欢迎与作者交流。

正在加载评论...