一,使用open函数打开文件(使用ifstream)
在我的前一篇博文c++面向对象简介中,用ifstream介绍了c++中的文件操作函数ifstream。在这篇文章中给大家介绍一下具体使用方法。
1.绝对路径读取文件
特别注意,在windows系统中的绝对路径如下:
D:\programming\1.txt
但是在程序中应当改为:
D:\programming\1.txt
open函数
void open(const char* D:\\programming\\1.txt, int mode);
前面的地址大家都理解,后面mode就需要参考一下对文件操作的类型了。
表格引用自c语言中文网。
我们以“只读文件”操作为例:
int main()
{
//创建一个文件输入流对象
ifstream inFile;
//绝对路径寻找文件
inFile.open("D:\\programming\\1.txt",ios::in);
//加上读取模式(默认形式,可以不加)
string str;//显示一下
if (inFile){ //条件成立,则说明文件打开成功
cout<<"done!"<<endl;
getline(inFile,str);//按行显示
cout<<str<<endl;
inFile.close();//关闭操作绝对不可以省略,内存不释放后果很严重!!!
else
cout << "error!" << endl;
return 0;
}
2.文件名打开
直接把要打开的文件放到项目文件夹下,以VS2019为例,右下方属性中可以找到项目所在位置:
简单粗暴打开即可:
inFile.open("1.txt");
但是相对路径要注意,如果目标文件包含在子文件夹下(如lib)。
就需要这样写相对路径:
inFile.open("lib\\1.txt");
如果有多个文件,在lib前面加上即可,这就是open的使用。
二、使用流对象创建时的构造函数读取文件
上面使用open打开文件,要先创建文件流输入对象:
ifstream inFile;
再利用open函数打开:
inFile.open("D:\\programming\\1.txt");
(也是面向对象编程特点的体现)
对比使用流对象创建时的构造函数读取文件:
ifstream inFile("D:\\programming\\1.txt");
后面类型仍然默认为ios::in。