使用相同的文件对象按顺序写入和读取文件
Writing and reading from a file sequentially using the same file object
我正在学习 c++ 中的数据文件处理基础知识(并且正在使用编译器涡轮增压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())
。eof(文件结束(适用于数字值通常为 -1 的文件结尾标记。但是,仅当遇到并遍历结束字符时,此函数才会变为假。要消除此错误,只需将此语句替换为读取语句,该语句将此行fin>>v
从循环语句移动到条件语句。在这个假将当它遇到一个结束字符时。
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 遍历顺序由 std::文件系统directory_iterator给出
- 如何在C++中反转文本文件中字符的顺序?
- 确实可以提高directory_iterator在Windows上按字母顺序访问文件和文件夹
- 如何在 C++ 中将从文本文件中读取的元素推送和弹出到数组中,并按 Revserse 顺序输出堆栈?
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何从输入的文本文件中按姓氏字母顺序对图表进行排序?
- C++ 以相反的顺序输出文本文件
- 如何从OpenCV中的目录中按顺序读取文件并使用它进行处理?
- C++ 从文件中获取数据时使用 strcpy 和 strcmp 按字母顺序对数组进行排序?
- 从文件中读取并按字母顺序排序
- 生成文件似乎以错误的顺序编译文件
- 使用 boost::filesystem 迭代目录时可以更改文件的顺序吗?
- 使用相同的文件对象按顺序写入和读取文件
- 如何使用C 扭转输入文件的顺序
- 从C 中的文本文件顺序进行视觉检查的用户名和密码
- 用错误的标志顺序编译后,是否删除*.cpp文件
- 文件范围的原子是否受初始化顺序惨败的影响
- 如何确定打开流程文件的顺序
- 从文件C++中按字母顺序排序