比较数据类型

时间:2011-03-26 13:27:56

标签: c++ types comparison

int item;
cin >> item;

这是在我的代码中,但我希望用户能够键入整数或字符串。这基本上就是我想做的事情:

if(item.data_type() == string){
  //stuff
}

这可能吗?

4 个答案:

答案 0 :(得分:2)

你无法做到这一点,但通过更多的工作,你可以做类似的事情。如果安装了Boost库,则以下代码有效。它可以在没有提升的情况下完成,但这样做很乏味。

#include <boost/lexical_cast.hpp>

main() {
    std::string val;
    std::cout << "Value: " << std::endl;
    std::cin >> val;
    try {
        int i = boost::lexical_cast<int>(val);
        std::cout << "It's an integer: " << i << std::endl;
    }
    catch (boost::bad_lexical_cast &blc) {
        std::cout << "It's not an integer" << std::endl;
    }
}

答案 1 :(得分:1)

不,但你可以输入字符串,然后将其转换为整数,如果它是整数。

答案 2 :(得分:0)

答案 3 :(得分:0)

你所做的不是价值C ++代码。它不会编译!


你的问题是:

  

这是在我的代码中,但我希望用户能够输入整数或字符串

然后这样做:

std::string input;
cin >> input;
int intValue;
std::string strValue;
bool isInt=false;
try 
{   
    intValue = boost::lexical_cast<int>(input);
    isInt = true;
}
catch(...) { strValue = input; }

if ( isInt) 
{
   //user input was int, so use intValue;
}
else
{
   //user input was string, so use strValue;
}