2

我有一个带有 html 的大文本文件,我想在每个“ </b>”之后添加一个空格(在每个粗体字之后)

文字长度约为 581 810

我不知道如何正确地做到这一点,我想试试这个:

1-创建一个名为“v”的字符串向量

2-在此向量中获取文本的每个字符(不知道如何,我可以获取行和单词,但我不知道如何获取字符)(带有推回和另一个字符串)

3-</b>用这样的“for”循环检测每个“”:

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 获取行,以及使用“>>”获取单词。我不能用文字来做到这一点,因为 html 标签粘在文字上

谢谢

4

1 回答 1

0

http://ideone.com/KZsyc6

无需做任何花哨的事情(正则表达式、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(), ' ');
  }
}
于 2013-07-17T15:18:30.753 回答