我有一个字符串如下,
" 0/41/9 / 71.94 PC:0x82cc(add)"
所需的输出是方括号()
之间的文本Ex:output = add,
表示上面指定的字符串
使用sscanf如何完成? 有没有更好的方法在C ++中做到这一点?
答案 0 :(得分:0)
仅限string
次操作:
std::string text = "0/41/9/71.94 PC:0x82cc (add)";
auto pos = text.find('(') + 1;
auto opcode = text.substr(pos, text.find(')', pos) - pos);
使用sscanf
,它看起来像这样:
std::string opcode(5, '\0'); // Some suitable maximum size
sscanf(text.c_str(), "%*[^(](%[^)]", &opcode[0]);
答案 1 :(得分:0)
它很容易,你应该试试自己,想想如何在数组中搜索,然后想想如果我能比较一个数组的内容,那么每件事都是可能的,作为程序员你必须创造想法,但是,如果我被要求编写这样的程序,我会这样做:
int i=0, p=0;
char string="0/41/9/71.94 PC:0x82cc (add)", nstr[100];
while(string[i]!='\0')
{
while(string[i]!='(')
i++;
if (string[i]=='(')
{
i++;
goto end;
}
end:
while (string[i]!=')' || string[i]!='\0')
{
nstr[p]=string[i];
p++;
i++;
}
nstr[p]='\0';
cout<<Output = "<<nstr<<"\n";
我知道这很长,但这会让你更深入地理解解析或分割字符串,希望我帮助你,谢谢你......