我试图通过“标签”ex来分隔用户的输入:<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语句打印正确的结束标记,但是当我使用它来进行子字符串时,它似乎使用了最后一个结束标记。关于我在这里可能缺少什么的想法?
当你调用input.substr(iSlide, iNext+1)
时,你似乎希望这两个参数都成为input
的索引。只有第一个参数是索引。第二个参数是长度。结果,你的字符串太长了。如果你计算匹配的长度,那么你应该得到你想要的字符串。
也是未来的暗示,不要在一行文本中放置多行指令。很难阅读,理解和调试你编写它的方式。为每行源代码做一件事你会更高兴。