C++ 获取变量类型
本文将探讨在标准 C++ 中查找变量数据类型的不同方法。
C++ 获取变量类型
在某些情况下,我们需要在 C++ 中查找变量的动态类型或运行时的类型。因此,C++ 库为我们提供了不同的方法来查找变量的类型。
其中一种方法是使用 C++ 的 <typeinfo>
库中的 typeid
运算符。但是,另一种已在 C++11 中引入,称为 decltype(x)
,它将表达式转换为生成的结果的类型。
在旧版本的 C++ 中,每种数据类型都必须在编译时显式声明;但是,在较新的版本中,有一种工具可以自动推断表达式中的数据类型,这称为类型推断。decltype()
运算符还提供了自动推导表达式中数据类型的功能。
但是,我们将在本文中详细讨论每种方法。
在 C++ 中使用 typeid
运算符查找变量的类型
typeid
运算符存在于 C++ 的 <typeinfo>
库中,用于查找运行时提供的变量类型。但是,用于查找变量类型的完整函数是 typeid(x).name()
,其中 x
是应该找到其类型的变量。
使用的 name()
成员函数返回标识变量类型的字符序列。
但是,它将返回数据类型的首字母作为输出。例如,对于 int
,它将返回 i
,对于 float``f
,对于 double
,它将返回 d
作为类型。
让我们看看在 C++ 中使用 typeid
运算符来查找变量类型的代码。
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
int x = 200;
float y = 200.790;
cout << typeid(x).name() << endl;
cout << typeid(y).name() << endl;
cout << typeid(x*y).name() << endl;
return 0;
}
输出:
i
f
f
上面的输出显示 i
指的是 integer
类型,而 f
指的是 float
类型。此外,C++ 中的 typeid
也用于返回表达式的类型。
在上面的例子中,在 typeid
运算符中传递的表达式是两种不同数据类型 int
和 float
的乘积;因此,结果将被转换为更大的数据类型。
在 C++ 中使用 decltype()
说明符查找变量的类型
decltype(x)
说明符是在 C++11 中引入的。它是一个运算符,用于获取结果表达式的类型。
auto
关键字用于声明具有特定类型的变量,而 decltype
提取该变量类型。auto
和 decltype
都基于类型推断,即自动推断数据类型。
让我们看一个使用 decltype
运算符在 C++ 中查找变量类型的示例。
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
float function1() { return 4.5; }
int function2() { return 34; }
int main()
{
decltype(function1()) a;
decltype(function2()) b;
cout << typeid(a).name() << endl;
cout << typeid(b).name() << endl;
return 0;
}
输出:
f
i
上例中变量 a
和 b
的数据类型将与 function1
和 function2
的返回类型相同。
decltype
运算符的另一个示例如下,它提取 C++ 中表达式的类型。
#include <bits/stdc++.h>
using namespace std;
int main()
{
float ft = 4.8;
decltype(ft) a = ft + 9.8;
cout << typeid(a).name();
return 0;
}
输出:
f
输出 f
指的是 float
数据类型。因此,添加表达式 ft+9.8
后,结果数据类型将是 float
。
然而,typeid
和 decltype
运算符之间的主要区别在于 typeid
在运行时提供有关类型的信息,而 decltype
在编译时提供类型信息。
结论
在本文中,我们讨论了如何在 C++ 中获取变量的类型。我们讨论了两种不同的方法;一种是使用 typeid(x).name()
,它在运行时提供类型,而另一种是 decltype(x)
,它在编译时提供类型。
但是,这两种方法都有效且易于使用。
相关文章
在 C++ 中通过掷骰子生成随机值
发布时间:2023/04/09 浏览次数:169 分类:C++
-
本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。
在 C++ 中使用模板的链表
发布时间:2023/04/09 浏览次数:158 分类:C++
-
本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。
在 C++ 中添加定时延迟
发布时间:2023/04/09 浏览次数:142 分类:C++
-
本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。
在 C++ 中创建查找表
发布时间:2023/04/09 浏览次数:155 分类:C++
-
本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。
如何在 C++ 中把字符串转换为小写
发布时间:2023/04/09 浏览次数:63 分类:C++
-
介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码
如何在 C++ 中确定一个字符串是否是数字
发布时间:2023/04/09 浏览次数:163 分类:C++
-
本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。
如何在 c++ 中查找字符串中的子字符串
发布时间:2023/04/09 浏览次数:65 分类:C++
-
本文介绍了在 C++ 中检查一个字符串是否包含子字符串的多种方法。使用 find 方法在 C++ 中查找字符串中的子字符串
如何在 C++ 中把字符串转换为 Char 数组
发布时间:2023/04/09 浏览次数:107 分类:C++
-
本文介绍了在 C++ 中把字符串转换为 char 数组的多种方法。使用 std::basic_string::c_str 方法将字符串转换为 char 数组