//5.1简单的文件输入/输出 //从文件infile.dat读取3个数字,求和将结果写入文件outfile.dat //infile.dat和outfile.dat事先已经在根目录下 //(该程序的一个更好的版本在5.2给出) #include<fstream> int main() { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); out_stream.open("outfile.dat"); int first,second,third; in_stream>>first>>second>>third; out_stream<<"The sum of the first 3/n" <<"number in file.dat/n" <<"is "<<(first+second+third) <<endl; in_stream.close(); out_stream.close(); return 0; } //5.2同时检查open调用的文件输出和输出 //从文件infile.dat中读取3个数字,求和并将其写到文件outfile.dat中 #include<fstream> #include<iostream> #include<cstdlib> int main() { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout<<"Input file opening failed./n"; exit(1); } out_stream.open("outfile.dat"); if(out_stream.fail()) { cout<<"Output file opening failed./n"; exit(1); } int first,second,third; in_stream>>first>>second>>third; out_stream<<"The sum of the first 3/n" <<"number in infile.dat/n" <<"is "<<(first+second+third) <<endl; in_stream.close(); out_stream.close(); system("pause"); return 0; } 2010.12.22 今天更换了C++编译器,用code::blocks,感觉挺好的,而且是免费的! //5.3在文件末尾追加数据 //将数据追加到data.txt文件的末尾 #include <iostream> #include<fstream> #include<cstdlib> int main() { using namespace std; ofstream fin; fin.open("data.txt"); if(fin.fail()) { cout<<"Input file opening failed./n"; exit(1); } fin<<"1 2 bucket my shoe./n" <<"3 4 shut the door./n"; fin.close(); cout<<"Opening data.txt for appending./n"; ofstream fout; fout.open("data.txt",ios::app); if(fout.fail()) { cout<<"Input file opening failed./n"; exit(1); } fout<<"5 6 pick up sticks./n" <<"7 8 ain't C++ great!/n"; fout.close(); cout<<"End of appending to file./n"; system("pause"); return 0; } ——2010.12.24 //5.4输入一个文件名 //从用户指定的文件读取3个数字,累加这些数字,再将结果写到用户指定的另一个文件 #include <iostream> #include<fstream> #include<cstdlib> void initialization(); //初始化要读取的文件 int main() { using namespace std; char in_file_name[16],out_file_name[16]; ifstream in_stream; ofstream out_stream; ofstream initialization_stream; cout<<"I will sum three numbers taken from an input/n" <<"file and write the sum to an output file./n"; cout<<"Enter the input file name (maximum of 15 characters):/n"; cin>> in_file_name; cout<<"Enter the output file name (maximum of 15 characters):/n"; cin>> out_file_name; cout<<"I will read numbers from the file " <<in_file_name<<" and/n" <<"place the sum in the file " <<out_file_name<<endl; //创建一个 以in_file_name命名的文件,并初始化数据 initialization_stream.open(in_file_name); if(initialization_stream.fail()) { cout<<"initialization file failed./n"; exit(1); } initialization_stream<<"1/n"<<"2/n"<<"3/n"<<"4/n"; initialization_stream.close(); // 打开文件并执行操作 in_stream.open(in_file_name); if(in_stream.fail()) { cout<<"Input file opening failed./n"; exit(1); } out_stream.open(out_file_name); if(out_stream.fail()) { cout<<"Output file opening failed./n"; exit(1); } int first,second,third; in_stream>>first>>second>>third; out_stream<<"The sum of the first 3/n" <<"numbers in "<<in_file_name<<endl <<"is "<<(first+second+third) <<endl; in_stream.close(); out_stream.close(); cout<<"Enter of Program./n"; return 0; } //5.6格式化输出,流作为函数参数 //展示对输出进行格式化的命令 //读取rawdata.dat文件中的所有数字 //用美观的格式将数字写到屏幕,同时写到neat.dat文件 #include <iostream> #include <fstream> #include <cstdlib> #include <iomanip> //这是setw必需的 using namespace std; void make_neat(ifstream& messy_file,ofstream& neat_file, int number_after_decimalpoint,int field_width); //流参数必须是传引用调用 //前条件:messy_file和neat_file这两个流已用open函数连接到文件 //后条件:与messy_file流连接的那个文件中的数字写出屏幕 // 同时写到与neat_file流连接的那个文件 //每个数字独占一行,并采用定点记数法(换言之,不采用e记数法), //而且在小数点之后保留number_after_decimalpoint位小数; //每个数字的前面要么添加一个正号,要么添加一个负号, //而且每个数字都占用宽度为field_width的一个域(该函数不关闭文件) int main() { ifstream fin; ofstream fout; fin.open("rawdata.dat"); if(fin.fail()) { cout<<"Input file opening failed./n"; exit(1); } fout.open("neat.dat"); if(fout.fail()) { cout<<"Output file opening failed./n"; exit(1); } make_neat(fin,fout,5,12); fin.close(); fout.close(); cout<<"End of program./n"; return 0; } //使用iostream、fstream和iomanip: void make_neat(ifstream& messy_file,ofstream& neat_file, int number_after_decimalpoint,int field_width) { neat_file.setf(ios::fixed); //不采用e记数法 neat_file.setf(ios::showpoint); //显示小数点 neat_file.setf(ios::showpos); //显示正号 neat_file.precision(number_after_decimalpoint); cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.setf(ios::showpos); cout.precision(number_after_decimalpoint); double next; while(messy_file>>next) //如果还有需要读取的数字,就满足条件 { cout<<setw(field_width)<<next<<endl; neat_file<<setw(field_width)<<next<<endl; } } ——2010.12.25 //5.7检查输入 //演示new_line和get_input函数 #include <iostream> using namespace std; void new_line(); //丢弃当前输入行上剩余的所有输入 //同时丢弃行末的'/n'。这个版本只支持键盘输入 void get_input(int& number); //后条件:为number变量被赋予一个有用户批准的值 int main() { int n; get_input(n); cout<<"Final value read in = "<<n<<endl <<"End of demonstration./n"; return 0; } //使用iostream: void new_line() { char symbol; do { cin.get(symbol); }while(symbol != '/n'); } //使用iostream: void get_input(int& number) { char ans; do { cout<<"Enter input number: "; cin>>number; cout<<"You entered "<<number <<" Is that correct?(yes/no): "; cin>>ans; new_line(); }while((ans != 'Y')&&(ans != 'y')); } ——2010.12.27 //5.8编辑文本文件 //该程序用于创建一个名为cplusad.dat的文件,该文件等同于cad.dat文件, //只是后者中的所有'C'都被替换为'C++'。假定cad.dat中除了代表C编程语言 //的C之外,没有其他大写字母'C' #include <iostream> #include <fstream> #include <cstdlib> using namespace std; void add_plus_plus(ifstream& in_stream,ofstream& out_stream); //前条件:in_stream已经通过open调用连接到一个输入文件 //out_stream也通过open连接到一个输出文件 //后条件:与in_stream连接的文件的内容拷贝到与out_stream连接的文件中 //但每个'C'都被替换为"C++" void initialization(); //初始化,生成一个cad.dat int main() { initialization(); ifstream fin; ofstream fout; cout << "Begin editing files./n"; fin.open("cad.dat"); if(fin.fail()) { cout << "Input file opening failed./n"; exit(1); } fout.open("cplusad.dat"); if(fout.fail()) { cout << "Output file opening failed./n"; exit(1); } add_plus_plus(fin,fout); fin.close(); fout.close(); cout << "End of editing files./n"; return 0; } void add_plus_plus(ifstream& in_stream,ofstream& out_stream) { char next; in_stream.get(next); while(!in_stream.eof()) { if(next == 'C') { out_stream << "C++"; } else { out_stream << next; } in_stream.get(next); } } void initialization() { ofstream ini_doc; ini_doc.open("cad.dat"); if(ini_doc.fail()) { cout << "Input file opening failed./n"; exit(1); } ini_doc << "C is one of the world 's most modern/n" << "programming languages. There is no /n" << "languages as versatile as C, and C is /n" << "fun to use."; ini_doc.close(); } ——2010.12.29