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