Разделение ввода по тегам - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь отделить ввод от пользователя "Тегами", например: <b> и </b>

Код:

string toAdd;    
int iSlide = 0;    //before the first tag
iSlide = input.find("<");
toAdd = input.substr(0, iSlide);
cout << toAdd << endl;    //the first tag                                   
//   cout << input[input.find(">")+1] << endl;                         
int iNext = input.find(">");    
cout << input[iNext +1];    
toAdd = input.substr(iSlide, iNext+1);    
cout << toAdd << endl;    
iSlide = input.find(">" + 1);

Я работаю с примером Hello my name is <b>1 Tori </b>2 wow! Закомментированный оператор cout выводит правильный закрывающий тег, но когда я использую его для подстроки, он, похоже, использует последний закрывающий тег. Есть мысли о том, чего мне здесь не хватает?

1 Ответ

0 голосов
/ 16 апреля 2019

Когда вы вызываете input.substr(iSlide, iNext+1), вы, похоже, ожидаете, что оба параметра будут индексами в input. Только первый параметр является индексом. Второй параметр - это длина. В результате вы получаете слишком длинную строку. Если вы вычислите длину совпадения, вы должны получить желаемую строку.

Также подсказка на будущее, не помещайте несколько строк инструкции в одну строку текста. Трудно читать, понимать и отлаживать так, как вы это написали. Вы будете намного счастливее делать одну вещь для каждой строки исходного кода.

...