为了操作方便起见,我在项目中使用到的转换函数是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;
}
当然,这只是粗略的判断,不过对于日常使用而言足够了。