c++ std::Any 用法

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

Test1.h:

cpp 复制代码
#pragma once

void testAny(void);

Test1.cpp:

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不能存引用类型,其他都可以存。

相关推荐
码匠许师傅29 分钟前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
2603_9651481144 分钟前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
小小龙学IT2 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研3 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29144 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈5 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011165 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据5 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡6 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai6 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库