Учитывая код:Разбивает строку и получить значения перед различными разделителями
procedure example {
x=3;
y = z +c ;
while p {
b = a+c ;
}
}
Я хотел бы разделить код, используя разделители {
, ;
и }
. После расщепления я хотел бы получить информацию перед ней вместе с разделителем.
Так, например, я хотел бы получить procedure example {
, x=3;
, y=z+c;
, }
. Тогда я хотел бы нажать его в list<pair<int, string>> sList
. Может ли кто-нибудь объяснить, как это можно сделать в C++?
Я пробовал следовать этому примеру: Parse (split) a string in C++ using string delimiter (standard C++), но я мог получить только один токен. Я хочу всю линию. Я новичок в C++, а список, расщепление и т. Д. Запутан.
Edit: Так я реализовал его, и это код:
size_t openCurlyBracket = lines.find("{");
size_t closeCurlyBracket = lines.find("}");
size_t semiColon = lines.find(";");
if (semiColon != string::npos) {
cout << lines.substr(0, semiColon + 1) + "\n";
}
Тем не менее, кажется, что он не может с отдельной точкой с запятой на основе отдельно, openBracket и closeBracket. Кто-нибудь знает, как индивидуально отделяться от этих символов?
2nd Редактировать: Я сделал это (коды ниже). Он правильно отделяется, у меня есть один для открытой фигурной скобки. Я планировал добавить значение в список в комментариях ниже. Однако, когда я думаю об этом, если я это сделаю, тогда порядок информации в списке будет испорчен. Поскольку у меня есть другой цикл while, который отделяется на основе открытой фигурной скобки. Любая идея о том, как я могу добавить информацию в заказ?
Example:
1. procedure example {
2. x=3;
3. y = z+c
4. while p{
и так далее.
while (semiColon != string::npos) {
semiColon++;
//add list here
semiColon = lines.find(';',semiColon);
}
В вашем примере на то, что вы хотели бы получить, отсутствует цикл while. Это намеренно? Если да, каковы ваши точные критерии для анализа кода? – honk
@honk Извините, если я не понял. Это был всего лишь пример того, что я хочу. а также включен. Я успешно отделил их сейчас, сейчас я пытаюсь поместить его в список. – user3453250
Пользователь @ user3188346 предложил использовать функцию 'find_first_of' в своем ответе. Это должно помочь вам сохранить порядок линий. Вы попробовали это? – honk