c++ 的IO流
程序员文章站
2024-03-26 09:10:17
...
文件流对象
C++根据文件内容的数据格式分为二进制文件和文本文件
文件的操作步骤:
- 定义一个文件流对象 ifstream ifile(只输入用) ofstream ofile(只输出用) fstream iofile(既输入又输出用)
- 使用文件流对象的成员函数打开一个磁盘文件,使得文件流对象和磁盘文件之间建立联系
- 使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写
- 关闭文件
代码如下:
include <iostream>
#include <fstream>
#include "a.h"
using namespace std;
//int main()
//{
// //int d;
// ////无论什么类型,都调用的同一个函数,需要指明变量的类型
// //scanf("%d", &d);
// //char c;
// //scanf("%c", &c);
// //// cin 类型: istream
// //// istream 重载了>>运算符
// //// 对于不同的内置类型, cin 调用的是不同的>>运算符重载函数, 不需要指定变量的类型
// //cin >> d;
// //cin >> c;
// //cin.operator>>(d);
//
// cout << "cout";
// cerr << "cerr";
// clog << "clog";
// //cin.operator>>(c);
// return 0;
//}
// fopen fwrite fread
struct Info
{
char ip[20];
int port;
};
class Config
{
public:
Config(string filename)
:_filename(filename)
{}
//字节流读写(按内存形式读写)
void ReadBin(Info& info)
{
ifstream fin(_filename.c_str());
//seekg: 设置文件指针的位置
fin.seekg(0, ifstream::end);
// tellg:文件指针相对于文件起始位置(0)的偏移量, 间接获取文件大小
size_t byteNum = fin.tellg();
cout << "byteNum : " << byteNum << endl;
fin.read((char*)&info, sizeof(info));
fin.close();
cout << info.ip << endl;
cout << info.port << endl;
}
void WriteBin(Info& info)
{
ofstream fout(_filename.c_str());
/*fout.tellp();
fout.seekp();*/
fout.write((char*)&info, sizeof(info));
fout.close();
}
//字符流读写
void WriteText(Info& info)
{
ofstream fout(_filename.c_str());
fout << info.ip << endl;
fout << info.port << endl;
}
void ReadText(Info& info)
{
ifstream fin(_filename.c_str());
fin >> info.ip; // endl www.baidu.com\0汤汤汤汤汤汤汤80
//fin.operator >>(info.ip);
fin >> info.port;
//fin.operator >>(info.port);
}
private:
string _filename;
};
int main()
{
Info info;
strcpy(info.ip, "www.baidu.com");
info.port = 80;
Config cfg("Config.txt");
Info ReadInfo;
cfg.WriteBin(info);
//cfg.ReadBin(ReadInfo);
cfg.ReadBin(ReadInfo);
return 0;
}
上一篇: 微信小程序学习记录——4.框架-视图层
下一篇: java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
推荐阅读
-
java8 stream流对集合的常用操作
-
c++ 的IO流
-
Unity使用C++作为游戏逻辑脚本的研究(二)
-
C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
-
VS2017学习C++问题—(如何在一个源文件中调用另一个源文件的函数)
-
C++获取均值为0标准差为1的正态分布随机数
-
java 修改txt文件中某一行的内容 博客分类: Java IO
-
java 修改txt文件中某一行的内容 博客分类: Java IO
-
VC6.0与VC 2008的不同之-------SetWindowTextW 不能将参数 1 转换为“LPCTSTR 博客分类: c++ VC++
-
Doxygen风格的C++注释模板