c++ std::string转int

c++ std::string转int

实现方法:

  • atoi
  • strtol
  • stoi

c风格转换

atoi、strtol

这两个函数都是从字符串开始寻找数字或者正负号或者小数点,遇到非法字符终止。
当你的字符串不是数字的时候,或者小数点等非数字,不会报异常!直接输出0.

  • 纯数字字符
string strString = "123";
int nAtoi = atoi(strString.c_str());
int nStrtol = strtol(strString.c_str(),nullptr,10); 

// nAtoi:123
// nStrtol:123
  • 非纯数字字符
string strString = "123p";
int nAtoi = atoi(strString.c_str());
int nStrtol = strtol(strString.c_str(),nullptr,10); // strtol最后一个参数支持多进制

// nAtoi:0
// nStrtol:0

c++风格转换

stoi

stoi比c风格两函数多了异常

string str = "12f";
int nStoi1 = stoi(str); // 报异常 terminate called after throwing an instance of 'std::invalid_argument'

string str1 = "12";
int nStoi2 = stoi(str1);
// nStoi2:12

自定义

namespace STRING
{
template<typename T>
std::string to_string(const T& t) {
    std::ostringstream oss;
    oss << t;
    return oss.str();
}

template<typename T>
T from_string(const std::string& str) {
    T t;
    std::istringstream iss(str);
    iss >> t;
    return t;
}
}
void test()
{
	int nInt = 11;
	std::string strInt = STRING::to_string(nInt);
	// strInt:"11"
	
	std::string strInt2 = "12";
	int nInt2 = STRING::from_string<int>(strInt2);
	// strInt2 :12

}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值