C++ 比较数据类型

C++ 比较数据类型,c++,types,comparison,C++,Types,Comparison,这在我的代码中,但我希望用户能够键入整数或字符串。这基本上就是我想做的: int item; cin >> item; 这可能吗?不可能,但您可以输入字符串,然后将其转换为整数(如果是整数)。尝试阅读以下文章: 你不能完全做到这一点,但只要多做一点工作,你就可以做类似的事情。如果安装了Boost库,则以下代码可以工作。它可以在没有推进的情况下完成,但这样做很乏味 if(item.data_type() == string){ //stuff } #包括 main(){ s

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

int item;
cin >> item;

这可能吗?

不可能,但您可以输入字符串,然后将其转换为整数(如果是整数)。

尝试阅读以下文章:


你不能完全做到这一点,但只要多做一点工作,你就可以做类似的事情。如果安装了Boost库,则以下代码可以工作。它可以在没有推进的情况下完成,但这样做很乏味

if(item.data_type() == string){
  //stuff
}
#包括
main(){
std::字符串val;
标准:cout-val;
试一试{
inti=boost::词法转换(val);

STD::CUT

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


你的问题是:

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

然后这样做:

#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;
    }
}
std::字符串输入;
cin>>输入;
int值;
std::字符串strValue;
bool-isInt=false;
尝试
{   
intValue=boost::词法转换(输入);
isInt=真;
}
catch(…){strValue=input;}
如果(isInt)
{
//用户输入是int,所以使用intValue;
}
其他的
{
//用户输入是字符串,所以使用strValue;
}

RTTI允许他识别am对象的类型。我认为这对他的情况没有帮助。就RTTI而言,字符串“123”仍然是一个字符串。这就是我一直在寻找的-我该怎么做?我已经安装了boost,但我不想将其用于运行在命令中的小型RPG。
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;
}