我正在写一个程序,它获取用户的字符串输入并通过空格解析它。虽然循环不允许我正确解析字符串
由于程序需要,直到用户输入“退出”重复接收用户输入,我把我所有的代码在如下while循环:
while(cont == true)
{
cin>>command;
string parsedStr[3];
parsedStr[0] = "";
parsedStr[1] = "";
parsedStr[2] = "";
int j = 0;
for(i=0; i<command.size(); i++)
{
if (command[i] == ' ')
{
++j;
}
parsedStr[j] += command[i];
}
cout<<"Command: "<<parsedStr[0]<<"\n";
cout<<"Argument 1: "<<parsedStr[1]<<"\n";
cout<<"Argument 2: "<<parsedStr[2]<<"\n";
/* do my desired operations according to the received command */
}
然而,这是当我输入一个命令,如“执行12 345”,它会显示如下的结果和不分析的论点:
Command: execute
Argument 1:
Argument 2:
Command: 12
Argument 1:
Argument 2:
Command: 345
Argument 1:
Argument 2:
但是当我移动解析器出while循环,它完美的作品,并打印出以下内容:
Command: execute
Argument 1: 12
Argument 2: 345
我该怎么办?
您可以使用正则表达式和拆分空间。 – Bill
'ostream :: operator >>()'在空格处停留字符。变量'command'中不会有''''。 – timrau