在这段代码中,fout是一个ofstream对象,它假设写入一个名为output.txt
的文件。原因output.txt
总是空着!我会问我在代码中犯的错误:
#include<iostream>
#include<fstream>
#include<stdio.h>//to pause console screen
using namespace std;
double Volume(double);
int main() {
ifstream fin; //read object
ofstream fout;// writing object
double Radius;
fin.open("input.txt");
fout.open("output.txt");
if(!fin){
cout<<"There a problem, input.txt can not be reached"<<endl;
}
else{
fin>>Radius;
fout<<Volume(Radius);
cout<<"Done! check output.txt file to see the sphare volume"<<endl;
}
getchar();//to pause console screen
return 0;
}
double Volume(double r){
double vol;
vol= (4.0/3.0)*3.14*r*r*r;
return vol;
}
答案 0 :(得分:5)
“output.txt始终为空”
我怀疑您不允许fout
刷新其输出。这些陈述中的任何一个都适用于你吗?
在getchar()
之后检查“output.txt”的内容
调用,但在程序结束之前?
使用 Ctrl + C 结束程序?
如果是这样,您就不允许将数据写入fout
。您可以通过避免这两个条件或执行以下任一操作来解决此问题:
在您填写数据后添加fout << endl
,或
在您填写数据后添加fout << flush
,或
撰写数据后添加fout.close()
。
答案 1 :(得分:3)
您必须刷新流,在完成输出后调用fout.flush()
,您所做的只是构建一个尚未写入文件的缓冲区。 flush
实际上将缓冲区放入文件中。
答案 2 :(得分:1)
除了致电fout.flush()
之外,您还可以更改:
fout<<Volume(Radius);
到
fout<<Volume(Radius) << std::endl; // Writes a newline and flushes.
或者如果不再需要,您可以关闭流fout.close()
。