通过标签分隔输入

时间:2019-04-16 02:33:41

标签: c++ substring substr

我正在尝试通过<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 :(得分:0)

调用input.substr(iSlide, iNext+1)时,您似乎希望这两个参数都是input的索引。只有第一个参数是索引。第二个参数是长度。结果,您得到的字符串太长。如果您计算出匹配的长度,那么您应该得到想要的字符串。

这也是对未来的暗示,不要在一行文本中放置多行指令。很难阅读,理解和调试您的编写方式。您会很乐意为每一行源代码做一件事。