亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解c++11以正確的姿勢輸出enum class的值

 更新時(shí)間:2020年10月30日 11:06:06   作者:ztenv  
這篇文章主要介紹了詳解c++11以正確的姿勢輸出enum class的值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

c++11新增了enum class,相比傳統(tǒng)的enum好處多了很多,但也有些讓人不太爽的地方,如:輸出到std流時(shí)會報(bào)錯(cuò),進(jìn)行了強(qiáng)轉(zhuǎn)則沒有信息輸出,那么,到底該如何將enum class的值出到std流呢?

提供這個(gè)enum class的原因是因?yàn)榕f的enum有不少缺點(diǎn)。簡單描述一下:

1. 容易被隱式轉(zhuǎn)換成int

2. underlying type 指的是編譯器實(shí)現(xiàn)者幕后的實(shí)現(xiàn)細(xì)節(jié)導(dǎo)致了跨平臺,跨編譯器的不一致性。尺寸的不可估計(jì)等等。

3. 沒有嚴(yán)格的scope界限

下面,介紹一種通過重載<<操作符的方法來實(shí)現(xiàn),如下:

#include <iostream>
#include <sstream>

enum class error_code
{
  ok=0,
  invalid_args=1,
  runtime_error=2,
  //..
}; 

//重載operator<<的操作符,使error_code支持<<輸出
std::ostream & operator<<(std::ostream &os,const error_code &ec)
 {
   os<<static_cast<std::underlying_type<error_code>::type>(ec);
   return os;
 }


using namespace std;

int main(int argc,char *argv[])
{
  cout<<error_code::ok<<endl;
  cout<<error_code::invalid_arg<<endl;
  cout<<error_code::runtime_error<<endl;
 
  stringstream ss;
  ss<<error_code::runtime_error;

  return 0;
}

到此這篇關(guān)于詳解c++11以正確的姿勢輸出enum class的值的文章就介紹到這了,更多相關(guān)c++11 輸出enum class內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論