2014-11-08 5 views
0

У меня есть строка следующим образом,Извлечение конкретного образца текста из строки

«0/41/9/71.94 PC: 0x82cc (добавить)»

Требуемые выходной текст между скобками()

Ex: выход = добавить,

для строки указанной выше

Как это делается с помощью sscanf? Есть ли лучший способ сделать это на C++?

+1

описать общий метод, который работает не только на этом конкретном примере, но и на всех возможных входах - и я не говорю о коде. просто описание на английском. –

+0

Так что же это за «конкретный шаблон текста»? – Columbo

+0

@Columbo строка, о которой я упоминал, это текст, а шаблон - текст между() –

ответ

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

Demo.

С sscanf это будет выглядеть примерно так:

std::string opcode(5, '\0'); // Some suitable maximum size 

sscanf(text.c_str(), "%*[^(](%[^)]", &opcode[0]); 

Demo.

+0

Это нормально. Но ответ с sscanf был бы лучше из-за ограничений моего симулятора –

+0

@Insanelycurious Добавил решение 'sscanf'. – Columbo

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"; 

Я знаю, что это очень долго, но это даст вам более глубокое понимание разборе или spliting строку, надеюсь, я помочь u, thank u ...

+0

Я знаю об общем методе, но у меня есть ограничения по размеру кода в симуляторе, поэтому он искал конкретные методы. –

+0

Ок, брат, но у меня нет гораздо меньшего кода, чем это, извините, брату, удачи ... – Rishabh

Смежные вопросы