我如何知道 boost::any 是否包含文字字符串



我有这个代码

#include <boost/any.hpp>
std::vector<boost::any> a(  {1,2,3,"hello",3.0});
for (int i = 0; i < a.size();i++)
{
    if (a[i].type() == typeid(int)) // this works
    {
        std::cout << "int";
    }
    if (a[i].type() == typeid(char*)) // this does not work I know why
    {
        std::cout << "char*";
    }
}

我应该使用什么if语句来检测"hello"或任何大小的文字字符串?

如何确定 Boost 是否包含文字字符串?

字符串文字是 const char 的数组。 boost::any存储衰减的类型,因此字符串文本将是一个const char*

请注意,不能保证const char*是字符串文本。它可以是指向任何字符的指针,而不仅仅是字符串文本的第一个字符。

最新更新