C++进阶文件输入输出
一、输出内容到记事本的步骤
1、首先包含头文件"fstream"
#include<fstream>
笔记:
这里的"f"就是文件单词"File"的首字母,stream就是流
2、然后创建一个写操作的流对象
ofstream 流对象名;
例如:ofstream ofs;
笔记:
这里的"o"就是output,“输出”,这里的输出是相对于程序而言,不要理解错了呦!
就是将程序中的数据输出到记事本中,可以根据流水来记
程序中的数据我们让它流出去,流到文件中去,所以包含的头文件是stream
3、指定一个打开方式及其路径
ofs.open("这里输入路径", ios::out);
笔记:
1-输入的相对路径则会出现在当前代码的文件夹下
2-输入的绝对路径需要用"\\",而不是’\',\是转义字符
3-ios就是input,output,steam的缩写(输入输出流),然后后面我们指定输出out
其中::称为域运算符,简单理解就是out属于ios里面的东西,然后我们用::来调用
如果没有::你怎么确定out是ios里面的东西呢?这与->指针类似。(可以这么记忆)
4、写入内容
ofs << "我是内容" << endl;
5、(重点!!!)关闭文件
ofs.close();
6、可以在后面打印一句话来证明你已经执行完前面的内容了
cout << "内容输出至test01.txt文件结束" << endl;
7、完整代码
完整代码:
#include<iostream> //1、包含头文件 #include<fstream> using namespace std; void test01(){ //2、创建流对象 ofs可以换成其他名字 ofstream ofs; //3、指定打开方式 ofs.open("D:\\桌面\\C++TestFile\\test02.txt", ios::out); //4、写内容 ofs << "姓名:MiKu" << endl; ofs << "性别:女" << endl; ofs << "年龄:16" << endl; ofs << "爱好:唱歌,跳舞,给我爱的抱抱." << endl; //5、(重要!!!)关闭文件 ofs.close(); cout << "输出内容成功!" << endl; } int main() { //调用测试方法 test01(); return 0; }
二、将记事本的内容输入到程序中来的步骤
1、首先包含头文件"fstream"
#include<fstream>
2、然后创建一个写操作的流对象
ifstream 流对象名;
例如:ifstream ifs;
笔记:
这里的"i"就是input,“输入”->“流入”,同样的,这里的流入是让记事本的数据流入程序中使用!
还是容易记混的把程序当作自己来看待,我就是程序,由我流出的口水就是流出,我喝的水就是流入
水就相当于数据!
###3、指定一个打开方式及其路径
ifs.open("一样的这里填路径", ios::in);
可以利用is_open()来查看是否成功打开
if(!is_open()){
cout << "文件打开失败" << endl;
//打开失败就没必要执行下面的内容了
return;
}else{
cotu << "文件打开成功" << endl;
}
4、输出内容
####a、利用>>来流入一个数组中存储
char temp[1010];
//一行一行读
while(ifs >> temp){
cout << temp << endl;
//可以利用c的语法来验证是不是一行一行读入的
// printf("%s\n", temp);
}
笔记:
这里的 >> 就是和"cin >> "一致,cin就是将输入的数据流入变量(cin >> temp)
所以这里的 >> 可以和cin联合起来理解,那对应的"cout << " 则是流出,所以应该会分辨了吧。
b、利用ifs.getline来读取数据
char temp[1010];
//一行一行读
//ifs.getline(地址,数据大小)
while(ifs.getline(temp, sizeof(temp))){
cout << temp << endl;
}
####c、利用全局getline来读取数据
#include<string>
//使用到了string所以加一个头文件
string temp;
//是不是感觉与getline(cin, temp)似曾相识?
while(getline(ifs, temp)){
cout << temp << endl;
}
d、(不推荐)一个一个字符来读取
char temp;
//EOF end of file 文件尾,一直读到文件的最后
while((c = ifs.get()) != EOF){
cout << c;
}
5、(重要!!!)关闭文件
ifs.close();
6、完整代码
#include<iostream>
#include<stdio.h>
//如果是c语言玩家,则需要加#include<string>才可正确玩耍string
//1、包含头文件
#include<fstream>
using namespace std;
void test02(){
//2、创建流对象
ifstream ifs;
//3、指定一个打开方式及其地址
ifs.open("D:\\桌面\\C++TestFile\\test02.txt", ios::in);
//4、输出内容
//a方法(我比较喜欢的一种,因为简洁明了)
/*
char temp[1010];
while(ifs >> temp){
//cout << temp << endl;
//可以利用c的语法来验证是不是一行一行读入的
printf("%s\n", temp);
}
*/
//b方法
/*
char temp[1010];
while(ifs.getline(temp, sizeof(temp))) {
cout << temp << endl;
}
*/
//c方法我最爱
string temp;
while(getline(ifs, temp)){
cout << temp << endl;
}
//d方法
/*
char temp;
while((temp = ifs.get()) != EOF){
cout << temp;
}
*/
//5、(重要!!!)关闭文件
ifs.close();
}
int main()
{
//调用测试方法
test02();
return 0;
}