Как я могу узнать, содержит ли boost :: any буквальную строку? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть этот код

#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" или буквенной строки любого размера?

1 Ответ

3 голосов
/ 10 июля 2019

Как я могу узнать, содержит ли Boost any буквальную строку?

Строковые литералы - это массивы const char.boost::any хранит распавшиеся типы, поэтому строковый литерал будет const char*.

Обратите внимание, что нет гарантии, что const char* будет строковым литералом.Это может быть указатель на любой символ, а не только первый символ строкового литерала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...