【C++——文件操作】
写入
#include<iostream>
#include<fstream> //ofstream所需头文件
using namespace std;
int main()
{
//一打开文件:
string str= R"(C:\Users\admin\Desktop\新建文件夹\test.txt)";
//也可以用C风格字符串
//打开文件,如果不存在就创建一个。程序在哪个目录执行,文件就生成在哪,也可以传入指定目录,前面+目录即可
//C:/Users/admin/Desktop/新建文件夹/test.txt
//C:\\Users\\admin\\Desktop\\新建文件夹\\test.txt
//R"(C:\Users\admin\Desktop\新建文件夹\test.txt)"
//
// 三个效果一样 覆盖原始文件
//ofstream fout(str,ios::out);
//ofstream fout(str,ios::trunc);
//ofstream fout(str); //创建文件输出流对象 也可以open,效果一样fout.open();
ofstream fout(str,ios::app); //末尾追加
//文件可能打开不成功,要判断,否则直接写入数据会报错
//失败:目录不存在,磁盘已满,没有权限(Linux常见)
if (fout.is_open() == false)
return -1;
//二写入数据
fout << "1233" << endl;
fout << "hhh" << endl;
fout.close(); //关闭文件,fout对象失效前会自动调用close
return 0;
}
读取
c++读取文件出现乱码的原因是文本文件的编码格式和cmd的编码方式不一致造成的,修改文本文件编码格式,文本文件的编码格式和cmd的编码方式一致即可
win+r 打开cmd:chcp查看本地cmd编码方式
- 936:简体中文 GBK 编码。
- 65001:UTF-8 编码
#include<iostream>
#include<fstream> //ifstream所需头文件
#include<string>
using namespace std;
int main()
{
//一打开文件:
string str= R"(C:\Users\admin\Desktop\新建文件夹\test.txt)";
//也可以用C风格字符串
//打开文件,如果不存在就创建一个。程序在哪个目录执行,文件就生成在哪,也可以传入指定目录,前面+目录即可
//C:/Users/admin/Desktop/新建文件夹/test.txt
//C:\\Users\\admin\\Desktop\\新建文件夹\\test.txt
//R"(C:\Users\admin\Desktop\新建文件夹\test.txt)"
ifstream fin(str,ios::in);
if (fin.is_open() == false)
return -1;
string buffer; //存放从文件中读取的数据
//读取数据
//一次一行
while (getline(fin, buffer))
cout << buffer << endl;
fin.close(); //关闭文件,fout对象失效前会自动调用close
return 0;
}