Rah*_*hul 1 c c++ string enums
我研究了枚举,它只需要整数输入并返回相应的值.我想实现同样的东西,但我只有字符串作为输入.我想做以下工作 -
enum Types {
"Absolute", //"abs"
"PURE", //"PRE"
"MIXED" //"MXD"
}
Run Code Online (Sandbox Code Playgroud)
可能的陈述可能是 -
string sTpes = Types("abs"); //this should return "Absolute"
Run Code Online (Sandbox Code Playgroud)
要么
string sTpes = Types("MXD"); //this should return "MIXED"
Run Code Online (Sandbox Code Playgroud)
如果不使用枚举,请建议我实现这一目标的可能方法.
谢谢.
没有"string-enums",但是要从一个值映射到另一个值,您可以使用std::map,这是C++平台附带的标准模板:
#include <map>
#include <string>
int main() {
using std::map; using std::string;
map<string, string> ss;
ss["abs"] = "Absolute";
const string foo = ss["abs"];
std::cout << ss["abs"] << ", or " << foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
在C++ 0x中,如果你想要"安全"访问,如果没有找到密钥类型则抛出异常,使用map::at(实际上,afair,缺乏map::at只是当前标准的疏忽):
std::cout << ss.at("weird keY");
Run Code Online (Sandbox Code Playgroud)
或检查它是否存在:
if (ss.find("weird keY")==ss.end())
std::cout << "key not found\n";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |