如何删除文本文件C ++中的最后一个字符

时间:2015-12-07 14:06:38

标签: c++

我有一个文本文件,我在其中写下用户输入的前10个字符:

int x=0;
ofstream fout("out.txt"); 
while (x<=10)
{
   char c=getch();
   if (c==8)//check for backspace
      fout<<'\b';
   else
      fout<<c;
   x++;
}

每当用户按退格键时,我想从文本文件中删除以前输入的字符。

我尝试将'\b'写入文件但不删除最后一个字符。

我该怎么办?

由于

2 个答案:

答案 0 :(得分:0)

没有简单的方法可以删除C ++中文件的最后一个字符。你必须采取微不足道的方式,即: -

Read the contents of the file except the last one & copy it to another file

您可以使用input-output iteratorsstringsboth

答案 1 :(得分:0)

如果我正确理解,你的要求是BS应该将文件指针移回一个位置。这就是seekp正在做的事情。

在Windows中(因为getch ...),以下内容符合要求:

int x=0;
ofstream fout("out.txt"); 
while (x<=10)
{
    char c=getch();
    if (c==8) { //check for backspace
        fout.seekp(-1, std::ios_base::end);
        if (x > 0) x -= 1; // ensure to get 10 characters at the end
    }
    else {
        fout<<c;
        x++;
    }
}   return 0;

它在这里工作因为最后一个字符被覆盖。不幸的是,正如this other question确认的那样,没有标准方法可以使用fstream截断打开的文件。