You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手动实现字符串中HTML标签移除的编程练习求助

手动移除字符串中HTML标签的代码完善方案

嘿,我懂你现在在做教授布置的手动移除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, 
    // 这里代码还没完成对吧?
}

核心实现思路

要手动干掉HTML标签,核心就是精准定位标签的边界:找到每个<的起始位置,再找到对应的>结束位置,然后把这两个符号之间的所有内容(包括<和>)从字符串里删掉,重复这个过程直到字符串里再也找不到<为止。

完整的实现代码

我给你写了一个可以直接运行的版本,里面加了详细的逻辑处理:

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

int main() { 
    string name = "<HTML> smelly </b> butts </b> smell<test>"; 
    cout << "原始字符串: " << name << endl; 

    size_t startPos;
    // 循环查找并移除所有HTML标签
    while ((startPos = name.find('<')) != string::npos) {
        size_t endPos = name.find('>', startPos);
        // 处理两种情况:找到闭合的>,或者字符串末尾有未闭合的<
        if (endPos != string::npos) {
            // 删除从<到>的全部内容(包括两个符号)
            name.erase(startPos, endPos - startPos + 1);
        } else {
            // 如果找不到>,直接删掉从<开始的剩余部分
            name.erase(startPos);
            break;
        }
    }

    cout << "移除标签后的字符串: " << name << endl; 
    return 0;
}

代码关键点说明

  • 用string::find()来定位<和>,string::npos是字符串类里的特殊值,表示找不到目标字符
  • 每次删除标签后字符串长度会变化,所以用while循环持续检查,直到没有<为止
  • 加了对未闭合标签的处理(比如字符串末尾的<test),避免程序出现异常

内容的提问来源于stack exchange,提问作者user9506309

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:18:19