注意:
(1)字符在系统中以其ASCII码存储,对于数字字符要得到其实际的值,必须减去‘0'字符的ASCII码,之后的ASCII码就与数字字符的数据一致。
(2)基本思想:当遇到一个字符是数据后,不停的循环读后面的字符,直到遇到不是数字字符为止。
2读取的txt中有小数的情况
读回的txt如下图所示:
分离字符的函数如下:
//如果字符串中有小数
void stringTOnum2(string s, double* pdata)
{
bool temp=false;
int ndata=0; //整数部分
double fdata=0; //小数部分
int n=0; //小数部分的位数
int m=0;
for(int i=0;i<s.length();i++)
{
while((s[i]>='0')&&(s[i]<='9')||(s[i]=='.')) //当前字符是数据或者是小数点
{
temp=true;
if(s[i]=='.') //遇到了小数点
{
//不停的读取后面的小数
i++; //小数后的下一位
while((s[i]>='0')&&(s[i]<='9'))
{
n--;
fdata += (pow(10, n)*(s[i]-'0'));
i++;
}
}
//没有遇到小数点
else
{
ndata*=10;
ndata+=(s[i]-'0');
i++;
}
}
//刚读取了数据
if(temp)
{
pdata[m]=ndata+fdata;
m++;
ndata=0;
fdata=0;
n=0;
temp=false;
}
}
}
运行结果如下:











