C++ 如何检查c++;

C++ 如何检查c++;,c++,C++,我需要一个函数来判断一个变量是否是整数。 返回布尔值的函数在运行时使用typeid查找类型 int i = 3; cout << "i's typeid().name: "; cout << typeid(i).name() << endl; inti=3; cout您可以将(或C++17之前的版本)包装在几个助手函数中,即: template<typename T> bool isIntegral(const T& value) {

我需要一个函数来判断一个变量是否是整数。
返回布尔值的函数

在运行时使用typeid查找类型

int i = 3;
cout << "i's typeid().name: ";
cout << typeid(i).name() << endl;
inti=3;
cout您可以将(或C++17之前的版本)包装在几个助手函数中,即:

template<typename T>
bool isIntegral(const T& value)
{
    return std::is_integral_v<T>;
}

template<typename T>
bool isIntegral()
{
    return std::is_integral_v<T>;
}
模板
bool isIntegral(常数和值)
{
返回标准::为整数值;
}
样板
bool-isIntegral()
{
返回标准::为整数值;
}
用法示例:

int i = 0;
std::cout << std::boolalpha;
std::cout << isIntegral(i) << std::endl;
std::cout << isIntegral<int>();
inti=0;

std::cout类型通常在编译时已知,而不是在运行时。您可以使用基于模板的元函数,如,但它的工作方式与常规函数不同。你需要这个做什么?我想这和模板有关吧?否则就没什么意义了,因为你已经知道了。在国际海事组织,一个更好的问题是你的实际问题。为什么你认为你需要知道变量是否是整数?请学习如何创建一个,并阅读。您能准确地说出这个'std::is_integral_v'是如何工作的吗?
std::is_integral_v
是一个布尔常量,在本例中为
true
std::is_integral\u v
false
如何获取此变量?它来自哪里?你的用例的一个例子将强化这个问题。你可以将
isIntegral(i)
缩短为
isIntegral(i)
。虽然这是两个答案中更正确的一个,但我不确定辅助函数是否比更具idomatic的
std::is_integral\u v
@Fibbles增加了很多好处,我也不是,这正是op要求的,所以我想他们可能需要它来完成任务。是的,这很公平。好的。为什么要投反对票?因为这并不能真正回答问题。也就是“如何检查变量是否为整数”。注意
typeid
:它将为类型提供唯一标识符,但不能保证它生成的标识符对人类有任何意义。更糟糕的是,使用一个编译器和版本生成的标识符可能与同一编译器的不同编译器或版本的输出不匹配。问题在标题中。原因就在身体里。哦,好吧-被接受的答案有些有趣。答案是无用的,因为它没有提供一个函数,返回问题中要求的布尔值。您甚至不能使用
typeid
生成返回bool的函数,因为
int
的type\u info与
char
的type\u info并不等价,但两者都是整数。