是否可以使用cpp代码编辑文件中的文本。已经有相关的问题,但它并没有解决我的问题。请帮助我。 我已经给出了一个粗略的代码行。 seek()遍历文件并尝试用从该点到行尾的新字符串替换内容。 我需要放置“hello”字符串,并且必须是行尾。
就像我们将new.txt作为
一样ABCDEFGHIJKLMNOPQRST
如果我希望将文件内容更改为
ABCDEHELLO
我将文件内容改为
ABCDHELLOJKLMNOPQRST
fstream file("new.txt",fstream::in|fstream::out);
file.open();
while(getline(file,str))
{
if(value==strstr())
{
file.seekp(pos);
str.erase(pos,len);//len specifies the value till end of str
str.replace(pos,6,"hello");
char *d=new char[str.length()+1];
strcpy(d,str.c_str());
file.write(d,strlen(d));
delete [] d;
}
}
如果我可以将文件内容复制到字符串中,对其进行操作,然后复制到新文件即可。
是否可以更改同一文件中的内容。如果这样帮助我,我会对此感到震惊。如果替换字符串比实际存在的字符串长,那么这可以工作,但如果替换字符串小于实际存在的字符串,那么我无法做到。
答案 0 :(得分:0)
如果您的情况只是文件中的一行,您可以分两个阶段轻松分离I / O过程。阅读文件并获取文本的位置。然后关闭文件并重新打开,然后写下你想要的字符串。请注意,如果文件中有一行,这将有效 检查以下代码
std::string value = "GFGHHFGHH";
std::string str;
std::fstream file("new.txt", std::ios::in);
std::size_t found;
while (file >> str)
{
found = str.find(value);
if (found != std::string::npos)
{
str.erase(value.length() );
str.replace(found, 6, "hello");
}
}
file.close();
file.open("new.txt", std::ios::out);
file << str;
file.close();
答案 1 :(得分:0)
您可以使用sed的系统调用来执行此操作:
string s="sed -i s/hey/ho/g file0102.txt";
system(s.c_str());