2013-07-17 4 views
2

У меня есть большой текстовый файл с HTML на нем, и я хочу, чтобы добавить пробел после каждого «</b>» (после каждого слова выделены жирным шрифтом)обнаружения определенной строки в текстовом файле

Текст длина составляет около 581 810

И я понятия не имею, как сделать это правильно, я хотел бы попробовать это:

1-Создать строковый вектор с именем «v»

2-Получить каждый символ текста (не знаю, как это сделать, я могу получить строку и слово, но я не понимаю, как получить chara cters) в этом векторе (с задвиньте и другую строку)

3- обнаружить каждый «</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 и словами с «>>». Я не могу сделать это с помощью слов, потому что HTML-теги наклеить на слова

благодаря

+0

Вам нужно использовать C++? – nouney

+0

Есть ли какая-то конкретная причина, по которой вы хотите сделать это на C++, или вы просто ищете решение в целом? – jpw

+0

Вам нужно красивое решение, которое не предполагает, что символы должны быть только 581810. – turnt

ответ

0

http://ideone.com/KZsyc6

Не делая ничего сверхъестественного (регулярное выражение, команд оболочки), вы можете сделать что-то вроде этого:

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(), ' '); 
    } 
} 
Смежные вопросы