首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现抛出语句来执行整数值

如何实现抛出语句来执行整数值
EN

Stack Overflow用户
提问于 2013-11-03 22:44:37
回答 1查看 1.5K关注 0票数 1

我有一个对你们中的许多人来说可能很简单的问题,但我没有找到我的问题的答案。

我有下面的程序,正在正常工作。此代码将数字转换为浮点数和整数。

假设你输入了5.4,程序会给你5.4的双倍和5的整数。

现在,我需要向我的程序添加一个抛出catch语句,以防用户输入文本而不是数字(“如果转换失败,抛出异常并允许用户重新输入值”)。

这是我需要做的伪代码。

代码语言:javascript
复制
try {
        if(num ==character)
            throw;
        cout << "\n The number entered " << num << "invalid, please enter again";
    }
    catch
    {
    }

我实现了这样的东西,但是它不起作用。我设置了“a”变量字符,认为用户必须输入文本才能获得该消息。然而,它不起作用,并产生了一些错误。

代码语言:javascript
复制
try
    {
      char a;
      if (num == a) 
        throw num;  
    }
    catch(int e)
    {
      cout << "A number of " << a << " is invalid." << endl;
      cout << "Please re-enter a number: ";
      cin << num  
    }

我是非常新的这个“尝试,扔,接”的条款。如果你能帮我度过难关,我会很高兴的,谢谢。

代码语言:javascript
复制
#include <C:\\CSIS1600\MyCppUtils.cpp>
#include <iostream>
#include <string>
using namespace myNameSpace;
int main()
{   
    runner("is running");
    cout << "Enter a number :  ";
    string num;
    getline(cin, num);

    cout<< "double " << getValidDouble(num) << endl;
    cout<< "integer " << getValidInt(num) << endl;

    system("pause");
    return 0;
}

#include<iostream>
#include<string>
using namespace std;

namespace myNameSpace
{
    string num;

    void runner(string str)
    {
        cout <<"runner-3() is running.."<<endl;
    }

    int getValidInt(string n)
    {

        int valueint;
        valueint=atoi(n.c_str());
        return valueint;
    }

    double getValidDouble(string n )
    {

        double valuedouble;
        valuedouble = atof(n.c_str());
        return valuedouble;
    }
} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 23:28:36

您可以使用Boost进行词法转换。如果您有有效的输入(例如2.54),则不会抛出任何异常,但是如果输入无效(例如,2?54),则抛出bad_lexical强制转换:

代码语言:javascript
复制
#include <boost/lexical_cast.hpp>

try
{
    double x1 = boost::lexical_cast<double> ("2.54");
    double x2 = boost::lexical_cast<double> ("2???54");
    cout << x1 << x2 << endl;
}
catch(boost::bad_lexical_cast& e)
{
    cout << "Exception caught - " << e.what() << endl;
}   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19759111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档