使用C++进行字符串转数字注意点

博客介绍在项目中使用C++ string自带转换函数(如stoi)而非C风格方法(如ctoi),并指出字符串转数字时需注意字符串不能空且无特殊字符,为此要在转换前判空和判断特殊字符,还写了判断函数,虽粗略但日常使用足够。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了操作方便起见,我在项目中使用到的转换函数是C++中string自带的诸如stoi等的转换函数,而不是C风格的ctoi等方法,但是使用这些方法需要几个注意点:

1. 字符串不能为空;
2. 字符串中不能有特殊字符。

这两点对于字符串转为数字而言非常重要,这也就对代码提出了一些要求:
1. 转换之前先判空;
2. 判断是否有特殊字符。

鉴于此,特意写了一个判断函数,源码如下:

bool strIsOK(const std::string & rawData) const
{
	auto iter = rawData.begin();
	int pointCount = 0;
	for (; iter != rawData.end(); ++iter)
	{
		if (!('0' <= *iter && *iter <= '9'))
		{
			return false;
		}

		if (*iter == '.')
		{
			++pointCount;
		}
		
		if (pointCount > 1)
		{
			return false;
		}
	}

	return true;
}

这样,只要在进行字符串转换之前进行如下的判断即可:

std::string strTemp(rawData);

if (strTemp.empty() || !strIsOK(strTemp))
{
	return false;
}

当然,这只是粗略的判断,不过对于日常使用而言足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值