12 c++ string io comparison string-comparison
比较std::strings 的最佳方法是什么?显而易见的方法是if/ else:
std::string input;
std::cin >> input;
if ( input == "blahblahblah" )
{
// do something.
}
else if ( input == "blahblah" )
{
// do something else.
}
else if ( input == "blah" )
{
// do something else yet.
}
// etc. etc. etc.
Run Code Online (Sandbox Code Playgroud)
另一种可能性是使用std::map和switch/ case.在进行这些比较(例如8,10,12 +)时,最好的方法是什么?
Ben*_*Ben 25
这是使用std :: map的示例.
#include <map>
#include <string>
#include <iostream>
#include <utility>
void first()
{
std::cout << "first\n";
}
void second()
{
std::cout << "second\n";
}
void third()
{
std::cout << "third\n";
}
int main()
{
typedef void(*StringFunc)();
std::map<std::string, StringFunc> stringToFuncMap;
stringToFuncMap.insert(std::make_pair("blah", &first));
stringToFuncMap.insert(std::make_pair("blahblah", &second));
stringToFuncMap.insert(std::make_pair("blahblahblah", &third));
stringToFuncMap["blahblah"]();
stringToFuncMap["blahblahblah"]();
stringToFuncMap["blah"]();
}
Run Code Online (Sandbox Code Playgroud)
输出是:
second
third
first
Run Code Online (Sandbox Code Playgroud)
这种方法的好处是:
查看使用boost :: function使语法更好一些,特别是对于类成员函数.