(创建一个文本文件)编写程序,它创建一个名为Exercise13_1.txt的文件(若其不存在的话)。如果文件存在,将新数据附加在文件原内容之后。将随机生成的100个整数写入文件(文本I/O方式)。整数间用一个空格分隔。
值得注意的是题目要求每个数字之间空一格,因此在重复读取时,应该使用getline而不是其他的,另一点值得注意的是:文件被加载在原内容之后。
这篇文章有更新!
我对这道题目进行了新的思考,如果每次都像以前的代码一样通过整体替换的方式完成输入输出,会增加内存和CPU的压力,如果我们关注一下文件打开模式里的ios特性,使用ios::app|ios:out来组合操作这次的输入输出,会更加好,下面看看我的新代码:
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
srand(time(0));
fstream inout;
inout.open("Exercise13_1.txt",ios::out|ios::app);
if(inout.fail())
{
cout<<"open failed,creat one."<<endl;
ofstream inout("Exercise13_1.txt",ios::out|ios::app);
}
for(int i=0;i<100;i++)
inout<<rand()%100<<" ";
string a;
int count=0;
if(inout.good())
cout<<"Done"<<endl;
inout.close();
ifstream input("Exercise13_1.txt");
while(!input.eof())
{
input>>a;
if(inout.eof())
break;
cout<<a<<" ";
// count++;验证是否有多余的写入写出
}
//cout<<endl<<count<<endl;
return 0;
}
我们看看可以直接用于交作业的代码:
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
srand(time(0));
fstream inout;
inout.open("Exercise13_1.txt",ios::out|ios::app);
if(inout.fail())
{
cout<<"open failed,creat one."<<endl;
ofstream inout("Exercise13_1.txt",ios::out|ios::app);
}
for(int i=0;i<100;i++)
inout<<rand()%100<<" ";
return 0;
}
下面是以前的代码:
这个比较简单,我们直接看代码:
下面的代码在Dev-C++上编译通过!
#include<iostream>
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
string b;
ifstream input("Exercise13_1.txt");
bool Che=input.fail();
if(input.fail())
{
cout<<"Open failed,going create one"<<endl;
ofstream output;
output.open("Exercise13_1.txt");
}
else
{
while(!input.eof())
{
getline(input,b);
}
}
cout<<b;
ofstream output;
output.open("Exercise13_1.txt");
srand(time(0));
if(Che==true)
for(int i=0;i<100;i++)
{
output<<rand()%1000<<" ";
}
else
{
output<<b;
for(int i=0;i<100;i++)
{
output<<rand()%1000<<" ";
}
}
output.close();
cout<<"Done,please check the file"<<endl;
return 0;
}