/*
:从已有文件读
:向指定文件写
: 打开文件供读写
*/
#include
void main()
{
/*文件打开模式:
*ios::in 只读
*ios::out 只写
*ios::app 从文件末尾开始写,防止丢失文件中原来就有的内容
*ios::binary 二进制模式,缺省情况下是以文本方式打开
*ios::trunc 打开一个文件,然后清空内容
*ios::ate 打开一个文件时,将位置移动到文件尾
*
*ios::nocreate: 不建立文件,所以文件不存在时打开失败 //以下两种与编译器有关,在VC编译器下ios::_Nocreate
*ios::noreplace: 不覆盖文件,所以打开文件时如果文件存在失败//在VC编译器下ios::_Noreplace
*/
//第一种打开文件方式
ifstream ifile("data1.txt",ios::in);//从文件向外读取(只读),若没有该文件,则打开失败
//第二种打开文件方式
/*void open(const char* filename,int mode,int access);
*filename:要打开的文件名
*mode:要打开文件的方式
*access:打开文件的属性(0:普通文件,打开访问1:只读文件2:隐含文件4:系统文件),缺省为0
*/
//ifstream ifile;
//ifile.open("data1.txt", ios::in);
ofstream ofile("data2.txt", ios::out);//向文件中写入数据(只写),若没有该文件,则默认创建该文件
//ofstream ofile("data2.txt", ios::out|ios::app);//从文件末尾开始追加写数据,若没有该文件,则默认创建该文件
//这里的txt文档在当前程序文件所在目录可以直接像上面那样打开,否则需要使用相对路径或绝对路径指明文件位置
//ifstream ifile("../data1.txt",ios::in);//相对路径指明文档在当前程序文件所在目录的上一级目录
//ifstream ifile("D:/test/data1.txt",ios::in);//绝对路径指明文档在当前程序文件所在目录的上一级目录
if (!ifile.is_open()) {
class="superseo">cout << "data1.txt文件打开失败!" << endl;
}
if (!ofile.is_open()) {
cout << "data2.txt文件打开失败!" << endl;
}
char readbuf[2000];
int line = 1;
memset(readbuf, 0, sizeof(readbuf));
//第一种读方式
while (ifile >> readbuf) {//这里使用标准库中的>>运算符,按换行符读取(碰到换行符就跳过并暂停读取),并自动忽略空白行(前提是缓存区readbuf足够)
cout <<line++<<": "<< readbuf<<endl;//这里需要添加换行符
//将读取内容写入新文件
ofile << readbuf << endl;//这里需要添加换行符(这里使用标准库中的<<运算符)
memset(readbuf, 0, sizeof(readbuf));
}
//第二种读方式
//while (ifile.getline(readbuf,sizeof(readbuf))) {//这里使用标准库中的getline()函数(碰到换行符就就跳过暂停读取),按换行符读取,不会忽略空白行(前提是缓存区readbuf足够)
// cout << line++ << ": " << readbuf << endl;//这里需要添加换行符
// ofile << readbuf << endl;//这里需要添加换行符
// memset(readbuf, 0, sizeof(readbuf));
//}
//第三种读方式
//string str;
//while (getline(ifile, str)) {//使用标准库中的getline()函数,按换行符读取(碰到换行符就跳过并暂停读取),不会忽略空白行
// cout << line++ << ": " << str << endl;//这里需要添加换行符
// ofile << str<
// memset(readbuf, 0, sizeof(readbuf));
//}
//第四种读方式
//char c;
//while ((c=ifile.get()) != EOF) {//使用标准库中的get()函数逐个读取文件的字符(会将换行符作为一个字符读取)
// cout << c;//这里不需要添加换行符
// ofile << c;//这里不需要添加换行符
//}
ifile.close();
ofile.close();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)