如何解析命令字符串

来源:百度知道 编辑:UC知道 时间:2024/07/03 03:38:18
例如
add,44,5
,44
,5是两个参数
如何解析出命令add以及后面的两个参数
我用substring获取接收命令的前三位,但是如果出现adda这样的情况就不能识别错误命令了
请问这样的命令字符串解析应该怎么做
能以status命令为例子写一个简单的处理过程吗
要求是:
1.可以带一个,s参数也可以不带参数
2要能判断出参数个数错误,参数类型错误(,s不能是 ,t或,2)
3.能判断出命令正不正确,如果提交statuss, 那么这样的输入肯定要报错

用find查找逗号, 然后根据返回的索引取得命令和参数.

size_type find(
value_type _Ch,
size_type _Off = 0
) const;
size_type find(
const value_type* _Ptr,
size_type _Off = 0
) const;
size_type find(
const value_type* _Ptr,
size_type _Off = 0,
size_type _Count
) const;
size_type find(
const basic_string& _Str,
size_type _Off = 0
) const;

如果是合法命令, 函数返回TRUE,否则false
op是返回的参数字符串

bool checkcmd(string cmd, string & op) {
//cmd = "status,s";
int index = cmd.find(',');
if (index==string::npos) {
// not found
op = "";
if (cmd=="status") {
return TRUE;
}
else {
return FALSE;
}
}
else {
// found
// cut string before op
string sub = cmd.Substring(index+1);
if (sub=='s') {
op =