我一直在尝试制作此示例的自己的版本:

从文件中删除特定行

但是我无法让我正常工作。 我对该程序的当前目标是删除该字符串及其信息(该字符串是第一个字符串下方的字符串),然后执行此操作。 但是,它也为第一行增加了一个额外的空间,使其看起来像这样:

(First Line)


(Second Line) This should be the first line.

这是代码:

infile = ifstream;
outfile = ofstream;
cout<< "What string would you like to delete";
cin>>delstr;
infile.clear();
infile.seekg(0, ios::beg);

ofstream tempfile;
tempfile.open("temp.txt",std::ios::app);

while(delreset == true){

    if(delstr == fLine){
        getline(infile, fLine);

        cout<<"String deleted.\n";
        delreset = false;

        while(fLine != nothing){
            getline(infile, fLine);
            tempfile<<fLine<<"\n";
        }

        tempfile.close();
        infile.close();
        outfile.close();
        remove("example.txt");
        rename("temp.txt","example.txt");

    }else{

        tempfile<<fLine<<endl;
        getline(infile, fLine);

    }
    outfile.flush();
    delreset = true;
}

我删除了使其成为实际程序的精简版本的功能,希望我没有进行任何编辑以免变得毫无意义。

#1楼 票数:0 已采纳

一个简单的版本:

...  // prepare everything as before
while(getline(infile, fLine)) {
    if(delstr == fLine) {   // if line found do nothing
        cout<<"String deleted.\n";
        getline(infile, fLine);  // EDIT: and read and ignore the following line 
    }
    else 
        tempfile<<fLine<<"\n";  // else copy it 
}
...  // here infile was read and tempfile contains the filtered output 

使用这种方法,您甚至可以直接写入输出文件。

顺便说一下, cin>>delstr; 只需要一个字。 它在第一个空格处停止,并忽略结尾的空格。 您可以使用getline(cin, delstr); 代替。

#2楼 票数:0

尝试类似这样的方法:

cout << "What string would you like to delete";
getline(cin, delstr);
bool deleted = false;

infile.clear();
infile.seekg(0, ios::beg);

ofstream tempfile;
tempfile.open("temp.txt", std::ios::app);

while (getline(infile, fLine))
{
    if ((!deleted) && (fLine == delstr))
    {
        getline(infile, fLine);
        cout << "String deleted." << endl;
        deleted = true;
    }
    else
        tempfile << fLine << endl;
}

tempfile.close();
infile.close();
outfile.close();

if (deleted)
{
    remove("example.txt");
    rename("temp.txt", "example.txt");
}
else
    remove("temp.txt");

  ask by bill translate from so

未解决问题?本站智能推荐:

1回复

防止PHP删除临时内存

我有一个表单系统,用户在其中选择要上传的文件,当他们选择文件时,我使用Javascript对文件进行了基本扫描,以确认它们是否被允许并且大小正确,然后我需要PHP进行另一次扫描捕捉Java语言可能遗漏的任何内容。 问题是,一旦PHP位完成,它将删除临时文件,因此当我上载它们时,它们不再存在。
1回复

如何从php:// temp包装器中删除文件

在PHP中,我使用内存(或临时内存)文件将图像从外部URL加载到GD资源中: 但是,据我了解,即使在imagecreatefromjpeg()之后没有使用该文件,该文件仍保留在内存中。 有没有一种方法可以释放由php:// temp包装器文件使用的内存? 或至少表明该文件已不
2回复

Java临时文件和自动删除

使用java的createTempFile方法创建临时文件然后将其重命名并将其保存为永久文件是安全的吗? 或者java或系统以某种方式跟踪其临时文件并在某些时候删除它们? 顺便说一句,这与Mac OS X有关。
1回复

Powershell强制停止后如何删除我的临时文件夹

我对我拥有的脚本有一个安全性问题。 我的脚本创建了两个临时CSV文件,运行脚本后,这些文件被删除。 现在,当脚本崩溃或用户停止脚本时,这些文件将保留在该文件夹中。 如果发生这种情况,我如何确保删除这些文件? 我正在考虑使用Windows临时文件夹“ $TempDir = [Syste
1回复

在Matlab中:如何删除多个数据文件中从xxx行到文件末尾的行范围

我有多个数据文件,有时,我想删除其中的不必要的多余数据行,例如从8000行到最后一行。 我想对所有包含在.txt文件中的数据文件执行此操作。 我过去常常手动执行此操作,但是经常执行此操作很繁琐。 我已经合并并修改了一些可以在网上找到的代码,但是有两个问题: 我不知道如何设置范围,
3回复

有效地删除文件Windows C ++

我有一个运行时间很长的过程,它会创建一个小图像(〜1-2 kb)并将其加载到内存中。 因为它是使用APK创建的,所以我必须先将其保存到文件,然后再将其加载到内存中。 那时我不再需要该文件。 该过程可能会创建数百万个这样的文件。 我正在使用Visual C ++。NET,这是一个基于W
1回复

C ++擦除(0,1); 在字符串中,删除文件中所有字符实例

我有一个程序在isMemLoc()函数中检查“ @ ”,如果找到一个,则应将其删除。 (此符号将始终是该行上的第一个字符,因此调用了delete(0,1) 但是,当找到该字符时,我的程序还将删除找到该值的所有行,例如: 变成 这是不希望的。 我究竟做错了什么?
2回复

奇怪的字符串结果

我的程序应该打开一个文件,使用argv[1]从命令行检索文件路径。 然后,我尝试使用fopen打开文件,但程序崩溃,因为我使用的文件路径不包含双反斜杠,因此fopen无法正常工作。 我试图编写自己的convert函数,并使用print来检查结果,乍一看看起来还不错。 问题是,当