我有一个带有html的大文本文件,我希望在每个“</b>
”之后添加一个空格(在每个粗体字后面)
文本长度约为581 810
我不知道如何正确地做到这一点,我想尝试一下:
1 - 创建名为“v”的字符串向量
2 - 获取文本中的每一个字符(不知道怎么做,我可以得到行和单词,但我不知道如何获取字符)在这个向量中(带有回推和另一个字符串)< / p>
3-使用“for”循环检测每个“</b>
”,如下所示:
for(int i = 0; i < 581810; i++)
{
if (v[i] + v[i+1] + v[i+2] + v[i+3] == "</b>"){
// add a space after </b> (don't know how to this)
}
}
但我不知道在我的字符串向量中获取每个字符,我知道如何获取行,使用getline和带有“&gt;&gt;”的单词。我不能用文字来做这件事,因为html标签贴在
字样上感谢
答案 0 :(得分:0)
没有做任何花哨的事情(正则表达式,shell命令),你可以这样做:
const std::string bTag("</b>");
std::string line;
size_t indexOfBTag=0;
for( ... ) //iterate through your file, line by line
{
//populate line with current line from file via getline, up to you
//store position of the b tag into indexOfBTag and make sure that theres a b tag in your line
//make sure to search starting after the last BTag found, or this loop will never end
//however, if the index is 0 (meaning the first search), dont bother adding the size
//hence the find(..., indexOfBTag > 0 ? indexOfBTag + bTag.size() : 0)
while((indexOfBTag = line.find(bTag, indexOfBTag > 0 ? indexOfBTag + bTag.size() : 0)) != std::string::npos) {
line.insert(line.begin() + indexOfBTag + bTag.size(), ' ');
}
}