用文件中的另一个词替换特定词[关闭]
Posted
技术标签:
【中文标题】用文件中的另一个词替换特定词[关闭]【英文标题】:Replace a particular word with another one in a file [closed] 【发布时间】:2016-10-31 12:13:10 【问题描述】:我如何在文本文件中找到一个特定的单词并将该单词替换为另一个单词并将测试写回文件(如果文本是段落分隔的)。我可以替换单词;如果它不是段落分隔的。使用 string.find 和字符串替换。
【问题讨论】:
将文件读入某种容器(我建议std::vector<std::string>
),然后查看。
定义段落分隔是什么意思?
【参考方案1】:
据我了解,您对替换单个段落中的单词感到满意,并且您对包含多个段落的文本持怀疑态度。
请查看一个名为“getline()”的函数。
此函数会读取整个文本,直到遇到“\n”元素(下一行)
所以你可以使用这个 getline 函数将一个完整的段落变成一个字符串。
在 while 循环中使用这个 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..
【讨论】:
如果搜索词在下一段的开头。我的代码没有检测到这个词。这是我的代码。 while (!(fid.eof())) getline(fid, data,' '); if (searchKey.compare(data) == 0) count=count + 1; 段落以“\n”结尾。 段落以 '\n' 结尾,这是下一行转义序列。因此,当您阅读文件时,您会得到两个与 \n 连接的段落合并。您可以将其可视化为段落 1\n 段落 2。这意味着 getline 函数在第 2 段的开头包含带有单词的 \n 字符。如果您以空格开头您的第二段,您将获得正确的计数 你也会遇到第一段最后一个字的问题。 我已经试过那个了。谢谢....以上是关于用文件中的另一个词替换特定词[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
用另一个替换特定字符串 - String#replaceAll()