c++ std::Any 用法小結(jié)
更新時間:2026年07月06日 09:24:49 作者:zh_xuan
本文演示了C++17中std::any的用法測試,示例代碼展示了std::any可以存儲多種類型值,通過any_cast進行類型安全的值提取,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下
據(jù)說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; // 這里轉(zhuǎn)化為指針再解引用
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); // 為了取值,做類型轉(zhuǎn)化, p是指針. 如果類型不匹配轉(zhuǎn)化失敗, 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. 據(jù)說any不能存引用類型,其他都可以存。
到此這篇關(guān)于c++ std::Any 用法小結(jié)的文章就介紹到這了,更多相關(guān)c++ std::Any內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)組越界引發(fā)的死循環(huán)問題解決
本文主要介紹了C語言數(shù)組越界引發(fā)的死循環(huán)問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
詳解C/C++ QT QChart 繪制組件應(yīng)用
Qtcharts 組件基于GraphicsView模式實現(xiàn),其核心是QChartView和QChart的二次封裝版。本文重點給大家介紹C/C++ QT QChart 繪制組件應(yīng)用的相關(guān)知識,感興趣的朋友一起看看吧2021-11-11

