C++中读取文件ifstream、ofstream
现在,我想对一个utf-8的json文件进行读写操作。在此过程中,遇到了一些问题。
头文件的添加:
#include <iostream>
#include <cstring>
#include <fstream>
#include <sstream>
(一)ifstream读取文件
A:使用char*的方式读取
ifstream readFile;readFile.open(L"需要读取的文件名.json"); //打开需要操作的文件if (readFile.fail())
{return FALSE; //说明文件读取失败!
}readFile.seekg(0 , std::ios::end); //将指针指向文件的结尾int nLen = readFile.tellg(); //获取文件的长度readFile.seekg(0 , std::ios::beg); //再将指针指向文件的开始,主要是为了读取数据char* buffer = new char[nLen];readFile.read(buffer , nLen); //读取文件中的内容readFile.close(); //在不对文件进行操作时,一定要关闭文件
B:使用string流的方式读取
ifstream readFile;readFile.open(L"测试文本.json"); //打开需要操作的文件if (readFile.fail())
{return ; //说明文件读取失败!
}std::string sBuffer;readFile>>sBuffer;int nLen = sBuffer.length();
使用这种方式的时候,有一些问题。我们可以看一下我调试的结果
当读取json文件时,遇到换行变会截断了。如果你要是觉得只有json文件才有这个错误,那就打错特错了!大家可以尝试下哈
C:现在,我们还是用流的方式读
使用这种方式时,不会再出现以上的数据丢失问题
ifstream readFile;readFile.open(L"测试文本.json"); //打开需要操作的文件if (readFile.fail())
{return ; //说明文件读取失败!
}
std::stringstream streambuffer;streambuffer<<readFile.rdbuf();string sdata(streambuffer.str());int nLen = sdata.length();
此时,调试出来的内容可以看到全部的数据了,大家可以使用一个文件测试下。
上面,我展示了两类读取文件的方式,一个是char*数组读取,一个是string流数据读取。其实,在这里,如果步步调试代码的同学就会发现一个问题,当用char*读取文件的长度比用string流方式读取的文件长度长!(如有问题可以验证)在此,我再郑重声明下,我做测试的文件是utf-8格式的json串。
(二)ofstream写入文件
ofstream writeFile;writeFile.open(L"需要写入的文件名.json");if (!writeFile)
{return FALSE; //打开文件失败
}writeFile<<schangeData;writeFile.close();
像我这么懒的人直接上代码就行了,再多的语言也不如代码看的清楚明白。
今天的内容就到这了,博友们如果有问题可以咱们可以一起学习交流
C++中读取文件ifstream、ofstream相关推荐
- python中读取文件过程中seek()函数的使用
python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...
- 从 Java 档案(JAR) 中读取文件
Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...
- 文件_ _android从资源文件中读取文件流并显示的方法
======== 1 android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...
- java中读取文件的方法
总结一下java中读取文件的方法: 方法一(逐行的读取文件内容): private FileReader fileReader; private BufferedReader bufferedRead ...
- C#中读取文件内容本文分步介绍了如何从文本文件
------- <a href="http://***" target="blank">Windows Phone 7手机开发</a>. ...
- java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...
我正在尝试从我的(附加组件)域目录之外的目录中读取文件 . 这是我的目录结构: public_html / domain / file_read.php file_write.php sensitiv ...
- 从zip中读取文件 合并到指定的文件中
从zip中读取文件 合并到指定的文件中 引入 commons-io 版本可以选择更高的版本 <dependency><groupId>commons-io</groupI ...
- java读文件几种方式_java中读取文件的方式有哪几种
java中读取文件的方式有哪几种 发布时间:2020-06-19 13:36:48 来源:亿速云 阅读:135 作者:鸽子 读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和 ...
- php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...
php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...
最新文章
- win10系统的qq无网络连接网络连接到服务器,Win10系统下误报无法连接internet该怎么办?新手速看...
- 利用shell监控cpu、磁盘、内存使用率
- Android数据之Json解析
- JavaScript上传图片及时预览
- (转) Arcgis for js之WKT和GEOMETRY的相互转换
- ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable
- Hyperledger Fabric 节点类型Commiter、Endorser、Leader、Anchor
- [转]How do I use variables in Oracle SQL Developer?
- 190726每日一句
- U盘数据丢失后怎样恢复
- 分布式系统架构、微服务架构等架构区别
- 阿里双十一购物节背后的技术问题
- 桌面计算机休眠快捷键,Win7怎么在桌面创建休眠快捷方式|win7休眠快捷键
- 定积分及其应用知识点总结_高中定积分知识点总结
- 计算机蓝屏无法启动代码50,win7系统出现蓝屏代码0x0000050怎么解决
- KeyguardBouncer启动流程
- abs和pc混在一起怎么解决_PC和ABS塑料使用中常见问题的分析及其解决办法
- android可拖拽九宫格,微信小程序实现九宫格图片拖拽
- 宽带和网线有什么区别?
- 一、在GPU上执行运算
热门文章
- win7装sql2000找不到服务器,win7系统安装SQLServer2000的详细步骤(图文)
- Kotlin 开发Android app(四):Kotlin 四大容器Set,Array,List,Map
- mysql executebatch_Mysql批量插入executeBatch测试
- 分布式系统原理(9)Paxos 协议
- 2440开发板恢复出厂设置
- 迈拓恢复出厂设置图解_如何把硬盘恢复出厂设置
- echarts地图上的标签为图片_PyEcharts——地图-数据可视化
- Win7 D盘没了:DiskGen 指派驱动器号时出现错误(00000002)系统找不到指定的文件
- Oracle Database 11g安装时显示[INS-13001]环境不满足最低要求。
- vue 在IE11中报错 “对象不支持“assign”属性或方法”