У меня есть строка следующим образом:
"0/41/9/71.94 ПК: 0x82cc (добавить)"
Желаемый результат - это текст между скобками()
Ex: output = add,
для указанной выше строки
Как это делается с помощью sscanf? Есть ли лучший способ сделать это в C++?
string
с 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]);
Демо.
sscanf
решение.
Его очень легко, вы должны попробовать себя, подумать, как искать в массиве, а затем подумать, могу ли я сравнить содержимое массива или нет, тогда все будет возможно, так как программисту нужно создавать идеи, однако, если я попросили написать такую программу, я бы сделал это следующим образом:
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";
Я знаю, что это очень долго, но это даст вам более глубокое понимание синтаксического анализа или сплит строки, надеюсь, что я помогу вам, спасибо...