作为练习的一部分,我的教授对讲座提出挑战,要求编写一些代码以从文本字符串中删除HTML标签。他提到了一个特定的命令,稍后我们将学习该命令,它将为我们完成此任务,但他希望我们手动执行此操作。

这是我到目前为止的内容:

#include<iostream>
#include<string>
using namespace std;

int main() {
  string name = "<HTML> smelly </b> butts </b> smell<test>";
  cout << name << endl;

  int a = 0, b = 0;

  for (int a = b; a < name.length(); a++) {
      if (name[a] == '<') {
          for (int b = a; b < name.length(); b++) {
              if (name[b] == '>') {
                  name.erase(a, (b + 1));
                  break;
              }
          }
      }
  }

  cout << name << endl;

  system("pause");
  return 0;
}

我感觉自己已经接近了,但是没有得到正确的输出。

最佳答案

for (int b = a; b < name.length(); b++) {
    if (name[b] == '>') {
        name.erase(a, (b + 1));
        break;
    }
}

在这部分代码中,您要擦除长度(b)的一部分,而应该擦除长度(b-a)的一部分

试试这个:
for (int b = a; b < name.length(); b++) {
    if (name[b] == '>') {
        name.erase(a, (b - a + 1));
        break;
    }
}

它应该可以根据需要工作。

10-04 21:56
查看更多