c++ - 简单的附加代码,带有严重的错误处理

标签 c++ parameters error-handling

我对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/

相关文章:

c++ - 创建组合框的 9x9 网格时的警告

c++ - 使用构造函数初始化指向已定义结构的指针数组

c++ - (重新)从 C++ 开始(用于科学计算)

python - 我可以在python中使用方程式作为参数吗

ruby-on-rails-4 - 如何在 .js.erb 渲染文件中传递参数并获取

spring - Spring验证默认消息

c++ - 如何找到从给定容器中抽出球的概率?

sql - 在 SSRS 查询中使用参数

vba - VBA 错误消息框不一致?

python - 即使Jupyter中的当前单元格发生错误,如何自动执行下一个单元格?