我有一个文本文件,我在其中写下用户输入的前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'
写入文件但不删除最后一个字符。
我该怎么办?
由于
答案 0 :(得分:0)
没有简单的方法可以删除C ++中文件的最后一个字符。你必须采取微不足道的方式,即: -
Read the contents of the file except the last one & copy it to another file
您可以使用input-output iterators
或strings
或both
。
答案 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
截断打开的文件。