// 向文件中写入用户输入的数据,然后程序从文件读取信息,并将其输出到屏幕上
void file_wr(){
char data[100];
// 向文件写入用户输入的数据
ofstream outfile;
outfile.open("test.txt");
cout << "write to the file......\n";
cout << "Enter you name: ";
cin.getline(data, 100);
outfile << data << endl;
cout << "Enter your name: ";
cin >> data;
cin.ignore();
outfile << data << endl;
outfile.close();
cout << "----------------------------------------\n";
// 从文件读取数据
ifstream infile;
infile.open("test.txt");
cout << "Read from the file......\n";
infile >> data;
cout << data << endl;
infile >> data;
cout << data << endl;
infile.close();
}
// 将一个文件复制到另一个文件
void file_copy(){
char data[100];
ifstream infile;
ofstream outfile;
infile.open("test.txt");
outfile.open("test_copy.txt");
cout << "copy from test.txt to test_copy.txt" << endl;
while(!infile.eof()){
infile >> data;
cout << data << endl;
outfile << data << endl;
}
infile.close();
outfile.close();
}
file_wr();
file_copy();
cin.ignore()函数介绍
关于cin.ignore(),完整版本是cin.ignore(int n, char a), 从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到n或者被抛弃的字符是a,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore(1024,’\n’),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数\n起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。
int a, b, c;
cout << "input a:";
cin >> a;
cin.ignore(1024, '\n');
cout << "input b:";
cin >> b;
cin.ignore(1024, '\n');
cout << "input c:";
cin >> c;
cin.ignore(1024, '\n');
cout<< a << "\t" << b << "\t" << c << endl;
如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF).其中EOF是end of file的缩写,表示"文字流"(stream)的结尾。如果在住址那里输入bcdabcd,那么此时流里面剩的是bcd\n,此时cin.ignore(); 吃掉的就是b了,这是流里还剩下cd\n直接交给cin.getline(str3,30); 因为有个\n所以这里getline就直接返回。