【发布时间】:2018-07-06 17:56:46
【问题描述】:
我正在学习 c++ 中的数据文件处理基础知识(并且正在使用编译器 turbo C++)。 所以我想创建一个文本文件,在上面写入一些数据然后读取它。 所以我写了这个:-
int main()
{
fstream fin;
fin.open("textfile.txt",ios::in|ios::out);
for(int i=0;i<3;i++)
{
char x;
cin>>x;
fin<<x;
}
fin.seekg(0,ios::beg); //I added this and also tried seekp() when I didn't get the desired output
//but to no use
while(!fin.eof())
{
char v;
fin>>v;
cout<<v;
}
fin.close();
getch();
return 0;
}
但不是只输出我输入的 3 个字符,而是输出 4 个字符。 我尝试删除循环并接受输入并像这样(除其他外)一一给出输出:
...
char x,y,z;
cin>>x>>y>>z;
fin<<x<<y<<z;
fin.seekg(0,ios::beg);
char q,w,e;
fin>>q>>w>>e;
cout<<q<<w<<e;
...
但还是不行。
我认为这与文件指针及其位置有关,但不知道是什么。我尝试在网上找到类似的问题,但无济于事。
所以我想知道我所做的有什么问题以及如何改进它以使用相同的文件对象顺序地实际写入和读取文件(如果可能的话)。 seekg() 在这里甚至是必要的吗?
谢谢。
【问题讨论】:
-
投反对票的人,想说明投反对票的原因吗?
-
while(!fin.eof())stackoverflow.com/questions/5605125/… -
题外话:您的文件输入变量可能希望为
finout,因为它既用于输入又用于输出。 -
@Thomas,但这是任意的,对吧?
-
实际上,您希望使用有意义的名称,例如“test_data_file”或“experiment_io_stream”。记住要编码,这样你就可以在 6 个月不看它之后理解它(你忘记了你的程序是如何运行的或它应该做什么)。
标签: c++ file-io file-handling turbo-c++ data-files