如何打印使用“std::any”类型的变量插入的字符串向量的元素
Posted
技术标签:
【中文标题】如何打印使用“std::any”类型的变量插入的字符串向量的元素【英文标题】:How to print an element of a string vector which was inserted using a variable of type "std::any" 【发布时间】:2020-06-25 08:03:52 【问题描述】:这是我的 c++ 代码的主要功能。
int main()
vector<string> a;
any x;
x="Hello";
a.insert(a.begin(),any_cast<string>(x));
cout<<a[0]<<endl;
这给了我这样的错误:
terminate called after throwing an instance of 'std::bad_any_cast'
what(): bad any_cast
Aborted (core dumped)
【问题讨论】:
【参考方案1】:问题是,"Hello"
的类型为 const char[6]
,并且会衰减为 const char*
,而不是 std::string
。这就是为什么你在尝试从std::any
获取std::string
时得到std::bad_any_cast
。
你可以换成const char*
点赞
a.insert(a.begin(),any_cast<const char*>(x));
或者从一开始就将std::string
分配给std::any
。
x=std::string("Hello");
或使用literals(C++14 起)
x="Hello"s;
【讨论】:
那么如果向量是 int 类型并且我在 X 中存储了一个 int 值。 @AviH 你有什么问题吗?它应该可以正常工作。 LIVE 非常感谢?。你说的弦乐有用。非常感谢。???????。 嘿抱歉,但它显示相同的错误与双值。 ?。字符串有效,但现在 double 出现问题。 @AviH 请创建mcve,或显示您的代码。以上是关于如何打印使用“std::any”类型的变量插入的字符串向量的元素的主要内容,如果未能解决你的问题,请参考以下文章
std::reference_wrapper<std::any> 上的类型特征