假設我們枚舉了執行operator<<
將枚舉值轉換爲字符串。是否可以在字符串建造或類似的事情中調用這個操作符?我目前的方法使用std::stringstream
在枚舉上調用< <,並從std::stringstream
中提取字符串。有沒有其他方法?使用std::cout <<
不是一個選項。調用枚舉<<字符串組合的運算符
示例代碼:
enum class Status {
OK,
ERROR
}
::std::ostream& operator<<(::std::ostream& os, Status status)
{
switch (status) {
case Status::OK:
return os << "OK";
case Status::ERROR:
return os << "ERROR";
}
用法:
Status s = Status::OK;
std::stringstream stream;
stream << s;
std::string statusString = s.str().c_str();
你總是可以做一個'std :: map',那麼你可以用它來檢索字符串並定義你的'operator <<'如果你想'std :: map statuses { {Status :: OK,「OK」},{Status :: ERROR,「ERROR」}};' –
CoryKramer
[enum to C++ in modern C++ and future C++ 17](http://stackoverflow.com/questions/28828957/enum-to-string-in-modern-c-and-future-c17) –
你錯過了默認情況,但你做得很好。或與std ::訣竅 –