C++提供了 std::fstream,用于以独立于平台的方式访问文件。std::fstream从std::ofstream那里继承了写入文件的功能,并从 std::ifstream 那里继承了读取文件的功能。
要使用 std::fstream 类或其基类,需要添加头文件:
#include <fstream>
要使用 fstream、ofstream 或 ifstream 类打开文件,需要使用open( )函数:
void open(const char *_Filename,
ios_base::openmode _Mode = ios_base::out,
int _Prot = (int)ios_base::_Openprot);
void open(const string& _Str,
ios_base::openmode _Mode = ios_base::out,
int _Prot = (int)ios_base::_Openprot);
第一个是要打开的文件的路径和名称(如果没有提供路径,将假定为应用程序的当前目录设置);第二个是文件的打开模式。
如果要关闭文件,需要使用close()函数,要判断文件是否打开成功,需要使用is_open()函数,写入文件可以使用“>>”,读取文件可以使用“>>”或者getline()等函数。
打开模式有以下几种:
- ios_base::app:附加到现有文件末尾,而不是覆盖它,用于文件追加数据。
- ios_base::ate:切换到文件末尾,但可在文件的任何地方写入数据。
- ios_base::trunc:导致现有文件被覆盖,这是默认设置。
- ios_base::binary:创建二进制文件(默认为文本文件)。
- ios_base::in:以只读方式打开文件。
- ios_base::out:以只写方式打开文件。
#include <iostream>
#include <fstream>
#include <string>
int main()
{
//写入
std::ofstream outFile;
outFile.open("1.txt",std::ios_base::out);
if (outFile.is_open())
{
for (int i = 0; i<100; ++i)
{
outFile << i << std::endl;
}
outFile.close();
}
//读取
std::ifstream inFile;
inFile.open("1.txt", std::ios_base::in);
if (inFile.is_open())
{
std::string text;
int num;
while (inFile.good())
{
//getline(inFile, text);
//std::cout << text<<std::endl;
inFile >> num;
std::cout << num << std::endl;
}
inFile.close();
}
//追加
outFile.open("1.txt", std::ios_base::app);
if (outFile.is_open())
{
for (int i = 100; i<150; ++i)
{
outFile << i << std::endl;
}
outFile.close();
}
system("pause");
return 0;
}