如何使用包含我的代码的文件来获取 C++ 中的类的名称?
Posted
技术标签:
【中文标题】如何使用包含我的代码的文件来获取 C++ 中的类的名称?【英文标题】:How can I get the name of a class in C++ using a file with my code? 【发布时间】:2016-02-22 03:35:08 【问题描述】:例如:
类 LOC_COUNTER //b ...
我只想获得“LOC COUNTER”,在我使用 I/O 阅读器获得的文件的上下文中,我有一个带有“class LOC_COUNTER //b”的字符串,但我只想要类的名称。
【问题讨论】:
//b
是什么?什么文件?什么 I/O 阅读器?您是否正在尝试解析 C++ 源代码?太模糊了。
【参考方案1】:
你可以使用typeid:
class X
int a;
;
int main()
X myVariable;
cout << typeid(myVariable).name() << endl;
这会打印一个 IMPLEMENTATION DEFINED 字符串。在 Visual Studio 2015 中,它会打印“class X”。
【讨论】:
不幸的是,在我见过的一些实现中(不记得是哪个),你只是得到一个空字符串。所以它完全不可靠......更不用说RTTI甚至不总是可用的。但是,对于非关键应用程序或特定平台上的应用程序,这是您最好的选择,也是唯一的选择,除非您想开始硬编码。 另外,看起来 OP 实际上是在尝试解析 C++,而不是获取有关当前执行程序的反射信息。虽然这个问题还很不清楚。 是的,也许,不清楚。这就是为什么我在答案中放了一个代码示例。 嗯,很抱歉模棱两可。我想说的是我有字符串 line = "class MyNewClass" 问题是:我怎样才能只得到 "My NewClass"以上是关于如何使用包含我的代码的文件来获取 C++ 中的类的名称?的主要内容,如果未能解决你的问题,请参考以下文章