这是一个示例代码段。
for (var i = 0; i < input.Length; i++)
{
var c = input[i];
if(char.IsUpper(c))
{
var charsToAdd = input.Skip(i).TakeWhile(char.IsUpper).ToArray();
if(charsToAdd.Length > 1)
{
i += charsToAdd.Length - 1;
}
if(i > 0) list.Add(' ');
list.Add(charsToAdd);
}
else
{
list.Add(c);
}
}
我想使用我的计数值进行比较,并将枚举类型作为输出结果。 我想这样做:
#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;
}
如何做到这一点?
答案 0 :(得分:1)
您可以使用std::underlying_type_t
来执行此操作:
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;
}
在C ++ 11中它变为:
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;
}