c++ std::Any 用法小結
更新時間:2026年07月06日 09:24:49 作者:zh_xuan
本文演示了C++17中std::any的用法測試,示例代碼展示了std::any可以存儲多種類型值,通過any_cast進行類型安全的值提取,下面就來詳細的介紹一下,感興趣的可以了解一下
據(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; // 這里轉化為指針再解引用
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. 據(jù)說any不能存引用類型,其他都可以存。
到此這篇關于c++ std::Any 用法小結的文章就介紹到這了,更多相關c++ std::Any內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言數(shù)組越界引發(fā)的死循環(huán)問題解決
本文主要介紹了C語言數(shù)組越界引發(fā)的死循環(huán)問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08

