C++ 文件输入输出(二)

///输入/输出流
///到目前为止,所展示的只是单一的打开文件的途径:要么为读取而打开,要么为写入而打开。
///但文件还可以以其它方式打开。迄今,你应当已经认识了下面的方法:

///ifstream OpenFile(“love.txt”);

///这可不是唯一的方法!以上的代码创建一个类ifstream的对象,并将文件的名字传递给它的构造函数。
///但实际上,还存在有不少的重载的构造函数,它们可以接受不止一个的参数。
///同时,还有一个open()函数可以做同样的事情。下面是一个以上代码的示例,
///但它使用了open()函数:

///ifstream OpenFile;
///OpenFile.open("love.txt");

///它们之间没有区别!
///只不过如果你要创建一个文件句柄但不想立刻给它指定一个文件名,那么你可以使用open()函数
///过后进行指定。顺便再给出一个要使用open()函数的例子:如果你打开一个文件,然后关闭了它,
///又打算用同一个文件句柄打开另一个文件,这样一来,你将需要使用open()函数。
///考虑以下的代码示例:
/*
#include <fstream>
#include<iostream>
using namespace std;
void read(ifstream &T) //pass the file stream to the function
{
//the method to read a file, that I showed you before
    char ch;

    while(!T.eof())
    {
       T.get(ch);
       cout << ch;
    }

    cout << endl << "--------" << endl;
}

int main()
{
    ifstream T("file1.txt");
    read(T);
    T.close();

    T.open("file2.txt");
    read(T);
    T.close();

    T.open("love.txt");
    read(T);
    T.close();
    return 0;
}
*/
///只要file1.txt和file2.txt并存储了文本内容,你将看到这些内容。
/*
taek woon oppa salanghei!!!


--------
gikwang oppa salanghei!!!


--------
Woohyun oppa salanghei!!!


--------

Process returned 0 (0x0)   execution time : 0.264 s
Press any key to continue.


*/
///文件名并不是你唯一可以向open()函数或者构造函数(其实都一样)传递的参数。下面是一个函数
///原型:

///ifstream OpenFile(char *filename, int open_mode);
///你应当知道filename表示文件的名称(一个字符串),而新出现的则是open_mode(打开模式)。
///open_mode的值用来定义以怎样的方式打开文件。下面是打开模式的列表:
/*
名称
描述
ios::in
打开一个可读取文件
ios::out
打开一个可写入文件
ios::app
你写入的所有数据将被追加到文件的末尾,此方式使用ios::out
ios::ate
你写入的所有数据将被追加到文件的末尾,此方式不使用ios::out
ios::trunk
删除文件原来已存在的内容(清空文件)
ios::nocreate
如果要打开的文件并不存在,那么以此参数调用open()函数将无法进行。
ios::noreplace
如果要打开的文件已存在,试图用open()函数打开时将返回一个错误。
ios::binary
以二进制的形式打开一个文件。
*/

///下面是一个关于如何使用打开模式的例子:
/*
#include <fstream>
#include<iostream>
using namespace std;
int main()
{
    ofstream SaveFile("file1.txt", ios::ate);

    SaveFile << "That's new!\n";

    SaveFile.close();
    return 0;
}
*/
///正如你在表中所看到的:使用ios::ate将会从文件的末尾开始执行写入。如果我没有使用它,
///原来的文件内容将会被重新写入的内容覆盖掉。不过既然我已经使用了它,那么我只会在原文件的末尾
///进行添加。所以,如果file1.txt原有的内容是这样:
///yosoep oppa salanghei !!!
///那么执行上面的代码后,程序将会为它添上“That’s new!”,因此它看起来将变成这样:
///yosoep oppa salanghei!!!That’s new!
///*********!!!但是 但是  我的输出 却是 : That’s new!         ******************晕晕晕****

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值