当前位置: 首页 > news >正文

fstream, operator, operator

平时在读写文件时,我习惯了WIN32和C函数,今天试着用C++的风格来处理了一下。

注意operator<<和operator>>中被我注释掉的代码,因为os<<user.name<<user.age输出到文件后会连在一起(例如shadow20),之后读取时会全部作为字符串(可以在它们之间加个空格避免这个问题,不过我感觉这有点那啥)。所以我就使用了read/write(这里一个明显的缺点就是字符串可能用不到这么大的空间,可以考虑先写个字符串长度,接着再写字符串而不是整个数组)。

 

#include <fstream>
#include <iostream>

struct user
{
    char name[32];
    int age;
};

std::ostream& operator<<(std::ostream & os, const user& user)
{
    //os<<user.name<<user.age;
    os.write(user.name, sizeof(user.name));
    os.write((const char*)&user.age, sizeof(user.age));
    return os;
}

std::istream& operator>>(std::istream & is, user& user)
{
    //is>>user.name>>user.age;
    is.read(user.name, sizeof(user.name));
    is.read((char*)&user.age, sizeof(user.age));
    return is;
}

int _tmain(int argc, _TCHAR* argv[])
{
    user users[2];

    // 写文件
    //strcpy_s(users[0].name, "shadow");
    //strcpy_s(users[1].name, "avexer");
    //users[0].age = 20;
    //users[1].age = 30;
    //std::ofstream fout("D:\\test.dat"/*, std::ios::binary*/);
    //fout<<users[0]<<users[1];

    // 读文件
    std::ifstream fin("D:\\test.dat"/*, std::ios::binary*/);
    fin>>users[0]>>users[1];
    return 0;
}

 

 

 

转载于:https://www.cnblogs.com/avexer/p/3327076.html

相关文章:

  • 图像检索(2):均值聚类-构建BoF
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • c# is和as的区别
  • 各种面试题 挺好 挺重要 项目中 有用 的地方
  • Nginx 1.正向代理与反向代理
  • C++ 运行单个实例,防止程序多次启动
  • systemC的安装
  • 利用hadoop来解决“共同好友”的问题
  • zabbix监控apache
  • 创建Windows窗体 : WinMain() 与 WndProc()
  • 不要再被骗了------QQ盗号原理大揭秘
  • Heroku安装与使用
  • webpack 4.14配置详解
  • 中间有文字的分割线效果
  • ie6,ie7下overflow失效解决方法
  • 《Java编程思想》读书笔记-对象导论
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • css布局,左右固定中间自适应实现
  • iOS编译提示和导航提示
  • Mysql5.6主从复制
  • Next.js之基础概念(二)
  • Objective-C 中关联引用的概念
  • Python - 闭包Closure
  • Python学习笔记 字符串拼接
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue.js源码(2):初探List Rendering
  • 构造函数(constructor)与原型链(prototype)关系
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 你不可错过的前端面试题(一)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 浅谈Golang中select的用法
  • 如何编写一个可升级的智能合约
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用Python写一份独特的元宵节祝福
  • 7行Python代码的人脸识别
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • #etcd#安装时出错
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (C语言)球球大作战
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (推荐)叮当——中文语音对话机器人
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .CSS-hover 的解释
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 常见的偏门问题
  • .net 程序发生了一个不可捕获的异常
  • .Net 路由处理厉害了
  • .Net6使用WebSocket与前端进行通信
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • @RestControllerAdvice异常统一处理类失效原因