前者string是常用类型,可以看作char[],其实这正是与string定义中的
_Elem=char相一致。而wstring,使用的是wchar_t类型,这是宽字符,用于满足非ASCII字符的要求,例如Unicode编码,中文,日文,韩文什么的。对于wchar_t类型,实际上C++中都用与char函数相对应的wchar_t的函数,因为他们都是从同一个模板类似于上面的方式定义的。因此也有wcout, wcin, werr等函数。 实际上string也可以使用中文,但是它将一个汉字写在2个char中。而如果将一个汉字看作一个单位wchar_t的话,那么在wstring中就只占用一个单元,其它的非英文文字和编码也是如此。这样才真正的满足字符串操作的要求,尤其是国际化等工作。
wstring str2wstr(const std::string& str)
{
using convert_typeX = std::codecvt_utf8<wchar_t>;
wstring_convert<convert_typeX, wchar_t> converterX;
return converterX.from_bytes(str);
}
wstring forwardStr = str2wstr(move_forward_str);
wstring backStr = str2wstr(move_back_str);
wstring moveLeftStr = str2wstr(move_left_str);
wstring moveRightStr = str2wstr(move_right_str);
wstring turnLeftStr = str2wstr(turn_left_str);
wstring turnRightStr = str2wstr(turn_right_str);
wstring backHomeStr = str2wstr(back_home_str);
wstring goAwayStr = str2wstr(go_away_str);
wstring stopMoveStr = str2wstr(stop_move_str);
if(convertStr.find(forwardStr) != string::npos)
{
ret = MOVE_FORWARD_CMD;
}
else if(convertStr.find(backStr) != string::npos)
{
ret = MOVE_BACK_CMD;
}