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

相关推荐
倒头就睡的小比特3 天前
算法竞赛C++常用的STL
c++·算法
weilx12343 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛3 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·3 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven3 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法