2017-04-26 7 views
1

これはサンプルスニペットです。私のカウント値を出力として列挙型に変換するには?

#include <iostream> 
#include <string> 
using namespace std; 

enum class status{ 
CONNECTED, 
NOT_CONNECTED 
}; 

int main(){ 

std::string x; 
std::cout<<"Enter a binary string = "; 
std::getline(std::cin,x); 
int count = 0; 
for (int i=0;i < x.size() ; i++){ 
    if(x[i] & 1) 
     ++count; 
} 

std::cout<<"count = " <<count <<std::endl; 
return count; 
} 

私のカウントの値を比較し、結果として列挙型を出力として使用します。 これはどうしたらいいですか?

//pseudo: 
if(count == 1) output state_CONNECTED; 
elseif(count > 1) output state_DISCONNECTED; 

どうすればいいですか?

+0

はいあなたが正しいです。 @skypjack –

+0

@skypjackは親切に私に方法を提案する –

+0

素晴らしい作品@skypjack –

答えて

1

あなたはそれを行うためにstd::underlying_type_tを使用することができます:C++ 11では

if(count == 1) { 
    std::cout << static_cast<std::underlying_type_t<status>>(status::CONNECTED) << std::endl; 
} else if(count > 1) { 
    std::cout << static_cast<std::underlying_type_t<status>>(status::NOT_CONNECTED) << std::endl; 
} 

それは次のようになります。

if(count == 1) { 
    std::cout << static_cast<typename std::underlying_type<status>::type>(status::CONNECTED) << std::endl; 
} else if(count > 1) { 
    std::cout << static_cast<typename std::underlying_type<status>::type>(status::NOT_CONNECTED) << std::endl; 
} 
+0

すばらしいおかげで@skypjack –