2016-10-31 3 views
-7

Как найти определенное слово в текстовом файле и заменить это слово на другое, и записать тест в файл (если текст разделен абзацем). Я могу заменить слово ; если его абзац не разделен. Использование string.find и string replace.Заменить конкретное слово другим в файле

+0

Прочитайте файл в какой-то контейнер (I предложит 'std :: vector '), а затем просмотрите это. – NathanOliver

+0

Определите, что означает разделение абзаца? –

ответ

0

Насколько я понимаю, вам удобно заменять слова в одном абзаце и что вы сомневаетесь в тексте с несколькими абзацами.

Обратите внимание на функцию, называемую функцией getline().

Эта функция читает весь текст до тех пор, пока не встретится элемент «\ п» (Следующая строка)

Таким образом, вы можете использовать эту функцию GetLine, чтобы получить один целый абзац в строку.

Используя эту функцию GetLine в цикле в то время как позволяет получить все пункты из текстового файла

Пример кода была предоставлена ​​ниже

#include<iostream> 
#include<string> 
#include<fstream> 
using namespace std; 
int main() 
{ 
    string a,b; 
    a="he"; 
    b="she"; 
    fstream text("text.txt"); 
    string line; 
    while (!text.eof()) 
    { 
     getline(text,line); 
     cout<<line<<endl; 
     //This string "line" is basically a string containing your first paragraph 
     //ADD your find and replace code here for the string "line". 
     //The second time the while loop executes the string "line" will contain the second paragraph and so on.. 
    } 
} 
} 
+0

Если искомое слово находится в начале следующего параграфа. Код не распознает слово. Это мой код. в то время как ((fid.eof())!) \t \t \t { \t \t \t \t GetLine (FID, данные,»«); \t \t \t \t, если (searchKey.compare (данные) == 0) \t \t \t \t { \t \t \t \t \t кол = кол + 1; \t \t \t \t} – Jesty

+0

Пункты заканчиваются на «\ n» справа. –

+0

абзац заканчивается на «\ n», который является следующей последовательностью escape-последовательности строки. Поэтому, когда u читает файл, u получает два абзаца, объединенные с \ n .U, может визуализировать его как paragraph1 \ nparagraph2. это означает, что функция getline включает в себя символ \ ncharacter со словом в начале параграфа 2. Если u начнет второй абзац ur с пробелом u, получим правильный счет –

Смежные вопросы