如何将字符串中的数字更改为整数而不是ASCII代码?

时间:2016-06-06 12:39:56

标签: c++ turbo-c++

问题:用C ++编写程序以显示文本文件中的数字总和。

- >

#include<iostream.h>  
#include<fstream.h>  
int main()  
{  
 ifstream f1("Fees.txt");  
 int sum=0;  
 char n;  
 while(f1.eof()==0)  
 {  
  f1>>n;  
  if(isdigit(n))  
   {  
   sum=sum+n;  
   }  
 }  
    cout<<sum;  
}  

我知道程序无效,因为字符串已更改为数字,(1更改为ASCII代码49而不是1)
请指导我 有没有更好的方法来解决这个问题?

更新确定所以我将行sum + = n更改为sum + = n - &#39; 0&#39;。 当文本文件Fees.txt中除了数字之外还有一个特殊字符时,程序似乎仍然有用   例如:

1 2 9

这不起作用

1 2 9ok

这确实有效,不知道这里发生了什么?

2 个答案:

答案 0 :(得分:3)

正如您所指出的,数字的ASCII码不会从零开始,这是您的问题。幸运的是,它们确实存在于连续范围内,因此您需要做的就是更改线路:

sum=sum+n;

sum += (n - '0');

答案 1 :(得分:1)

这与ASCII无关。 C和C ++标准要求'0'..'9'的值是连续且增加的,因此转换表示数字的字符只需要减去'0'而不管字符编码。所以:

sum += n - '0';

将解决问题。