C++ I';m使用C++;需要帮助识别代码中的错误吗

C++ I';m使用C++;需要帮助识别代码中的错误吗,c++,C++,我的outfile似乎写得正确,但infle正在读取垃圾值 #include <iostream> #include <string> #include <fstream> using namespace std; int main() { int count; ifstream infile; infile.open("accounts.txt"); ofstream outfile; outfile.open("accounts.txt"); c

我的outfile似乎写得正确,但infle正在读取垃圾值

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
int count;

ifstream infile;
infile.open("accounts.txt");

ofstream outfile;
outfile.open("accounts.txt");

cout<<"Read from file"<<endl;
infile>>count;
cout<<count<<endl;
cout<<"Write in file"<<endl;
outfile<<count;
cout<<count;

infile.close();
outfile.close();
return 0;
}

您的代码试图同时打开和访问同一个文件,作为输入流和输出流。这行不通

您应该重新排列代码,以便打开它进行输入,进行输入,然后关闭它。只有这样,您才能重新打开它进行输出

这里有一个建议:

intmain()
{
整数计数;
河流充填;
open(“accounts.txt”);//首先,打开以进行输入。。。
无法计数;//…并读取数据

cout添加到@Adrian的答案中。读取和写入发生在当前文件指针所在的位置,每次读取/写入都会进行。在您的特定情况下,当指针指向同一个文件时,您会敲击这些指针,导致垃圾值被打印出来。

是的,我使用同一个文本文件单独打开和关闭文件,并且它会Works现在很好。谢谢你的帮助!:)有一种替代方法,使用在输入和输出模式下打开的“通用”fstream
,但这需要一些额外的技巧。类似这样的东西:
fstream文件(“accounts.txt”,ios::in | ios::out | ios::app)
-有关类似问题的讨论,请参阅。实际上,我认为(但我仍在寻找权威性的确认)第二个
.open()
调用本质上会从第一个调用中关闭
ifstream
。@AdrianMole没有。如果流已经与文件关联(即,它已经打开),调用此函数失败。请参阅,我看到了该引用,但它与此无关,因为流输出文件的
尚未与文件关联。相反,该文件已与文件关联(不同)stream。啊,我明白了。抱歉,你是对的。这是可能的。一旦你得到确认,请让我知道。我想这会是一个很好的新问题:
Read from file
4255273
Write in file
4255273