C++ 从字符串中提取特定的文本模式

C++ 从字符串中提取特定的文本模式,c++,string,scanf,C++,String,Scanf,我有一个字符串,如下所示 “0/41/9/71.94 PC:0x82cc(添加)” 所需的输出是括号()之间的文本 例如:输出=添加 对于上面指定的字符串 如何使用sscanf实现这一点? C++中有更好的方法吗?< P>用字符串< /C> >操作专用: std::string text = "0/41/9/71.94 PC:0x82cc (add)"; auto pos = text.find('(') + 1; auto opcode = text.substr(pos, text.fin

我有一个字符串,如下所示

“0/41/9/71.94 PC:0x82cc(添加)”

所需的输出是括号()之间的文本

例如:输出=添加

对于上面指定的字符串

如何使用sscanf实现这一点?
C++中有更好的方法吗?

< P>用<代码>字符串< /C> >操作专用:

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]);

.

这很容易,你应该自己试试,想想如何在数组中搜索,然后想想如果我能比较数组的内容与否,那么一切都是可能的,作为一名程序员,你必须创造想法,但是如果我被要求编写这样的程序,我会按如下方式做:

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";
inti=0,p=0;
char string=“0/41/9/71.94 PC:0x82cc(add)”,nstr[100];
while(字符串[i]!='\0')
{
while(string[i]!='(')
i++;
如果(字符串[i]=='(')
{
i++;
转到终点;
}
完:
while(string[i]!=')'| | string[i]!='\0')
{
nstr[p]=字符串[i];
p++;
i++;
}
nstr[p]='\0';

我们可以描述一个通用方法,它不仅适用于这个特定的例子,而且适用于所有可能的输入——我不是说代码。只是一个英文描述。那么这个“特定文本模式”到底是什么呢?@Columbo我提到的字符串是文本,模式是()这没关系。但是由于我的模拟器,使用sscanf的答案会更好restrictions@Insanelycurious添加了一个
sscanf
解决方案。我知道一般的方法,但我在模拟器中有代码大小限制,所以我正在寻找特定的方法。好的,兄弟,但我没有比这个小得多的代码,对不起,兄弟,祝你好运。。。