我对C++很陌生,并且正在编写一个简单的加法程序。到目前为止,我有这段代码,该代码仅适用于数字作为参数:
int main(int argc, char *argv[])
{
if (argc==1)
cout << "email@gmail.com";
if (argc==2)
cout << "P";
//addition function
if (argc==3){
float number1 = atof (argv[1]);
float number2 = atof (argv[2]);
cout << number1 + number2 << endl;
}
if (argc>3)
cout << "P";
return 0;
}
如您所见,我正在为变量分配参数值并添加它们。这些argv是要测试的对象,它们必须能够处理所有内容。所以我有一些问题:
-如果变量之一不是有效数字(例如1或3000),如何使我的程序对此进行处理?为了有效,数字本身也不能是方程式(例如小数或其他形式)。
-如果在atof输入了一个奇怪的有效数字(如3,000.2(注意逗号)),则将其更改为3,该如何更改?
所以,对我抛出一些集成的错误检查/处理技术,我将永远爱你。
最佳答案
atof
不足以检测字符串是否代表有效数字(例如,对于“0.25lalala”,它将返回0.25)。
完整的C++解决方案:
第一:包括一个额外的标题:
#include <sstream>
#include <iostream>
using namespace std;
然后在
main
函数中: //addition function
if(argc==3)
{
float number1 = 0.0;
float number2 = 0.0;
istringstream istr(argv[1]);
istr >> number1;
if(istr.rdstate() != ios::eofbit)
{/* argv[1] is not a valid float number */
/* it works even if undeflow or overflow occures */
}
istr.clear();
istr.str(argv[2]);
istr >> number2;
if(istr.rdstate() != ios::eofbit)
{/* argv[2] is not a valid float number */
/* it works even if undeflow or overflow occures */
}
cout << number1 + number2 << endl;
}
关于c++ - 简单的附加代码,带有严重的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661530/