c++ std::Any 用法小结

 更新时间:2026年07月06日 09:24:49   作者:zh_xuan  
本文演示了C++17中std::any的用法测试,示例代码展示了std::any可以存储多种类型值,通过any_cast进行类型安全的值提取,下面就来详细的介绍一下,感兴趣的可以了解一下

据说std::Any能存任意值,测试下:

Test1.h:

#pragma once

void testAny(void);

Test1.cpp:

#include "Test1.h"
#include <any>
#include <string>
#include <iostream>

void testAny(void) {
    std::any a = 9527;
    std::cout << "a: " << *(std::any_cast<int>(&a)) << std::endl;  // 这里转化为指针再解引用
    int b = std::any_cast<int>(a); // 直接值传递
    std::cout << "b: " << b << std::endl;
    std::any c = std::string("日月之行,若出其中;星汉灿烂,若出其里。");
    a = '\n';
    a = c;
    auto p = std::any_cast<std::string>(&a); // 为了取值,做类型转化, p是指针. 如果类型不匹配转化失败, p为nullptr
    std::cout << "a: " << *p << std::endl;

    if (a.has_value()) {
        std::cout << "a 类型: " <<  a.type().name() << std::endl;
    }

    a.reset();

    if (a.has_value()) {
        std::cout << "a 有值 "<< std::endl;
    } else {
        std::cout << "a 没有值了,释放了。 "<< std::endl;
    }

}

运行:

ok. 据说any不能存引用类型,其他都可以存。

到此这篇关于c++ std::Any 用法小结的文章就介绍到这了,更多相关c++ std::Any内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt编写地图实现省市区域图的示例代码

    Qt编写地图实现省市区域图的示例代码

    本文主要介绍了Qt编写地图实现省市区域图的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • C语言数组越界引发的死循环问题解决

    C语言数组越界引发的死循环问题解决

    本文主要介绍了C语言数组越界引发的死循环问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 详解C/C++ QT QChart 绘制组件应用

    详解C/C++ QT QChart 绘制组件应用

    Qtcharts 组件基于GraphicsView模式实现,其核心是QChartView和QChart的二次封装版。本文重点给大家介绍C/C++ QT QChart 绘制组件应用的相关知识,感兴趣的朋友一起看看吧
    2021-11-11
  • vs2019创建dll以及使用的图文教程

    vs2019创建dll以及使用的图文教程

    本文主要介绍了vs2019创建dll以及使用的图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C++ using全解析

    C++ using全解析

    文章详细介绍了C++中的`using`关键字的三种主要用途,文章通过示例详细阐述了`using`的不同用法及其优势,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • C语言中的二叉树和堆详解

    C语言中的二叉树和堆详解

    这篇文章主要介绍了C语言中的二叉树和堆详解,树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,需要的朋友可以参考下
    2023-07-07
  • C语言实现猜数字小游戏

    C语言实现猜数字小游戏

    这篇文章主要介绍了C语言实现猜数字小游戏,附有详细代码,需要的小伙伴可以参考一下,希望对你的辽西有所帮助
    2021-10-10
  • C语言实现密码强度检测

    C语言实现密码强度检测

    这篇文章主要为大家详细介绍了C语言实现密码强度检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C++之vector内存释放原理

    C++之vector内存释放原理

    这篇文章主要介绍了C++之vector内存释放原理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言实现简易计算器功能

    C语言实现简易计算器功能

    这篇文章主要为大家详细介绍了C语言实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论