现在,我想对一个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相关推荐

  1. python中读取文件过程中seek()函数的使用

    python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...

  2. 从 Java 档案(JAR) 中读取文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  3. 文件_ _android从资源文件中读取文件流并显示的方法

    ======== 1   android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...

  4. java中读取文件的方法

    总结一下java中读取文件的方法: 方法一(逐行的读取文件内容): private FileReader fileReader; private BufferedReader bufferedRead ...

  5. C#中读取文件内容本文分步介绍了如何从文本文件

    ------- <a href="http://***" target="blank">Windows Phone 7手机开发</a>. ...

  6. java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...

    我正在尝试从我的(附加组件)域目录之外的目录中读取文件 . 这是我的目录结构: public_html / domain / file_read.php file_write.php sensitiv ...

  7. 从zip中读取文件 合并到指定的文件中

    从zip中读取文件 合并到指定的文件中 引入 commons-io 版本可以选择更高的版本 <dependency><groupId>commons-io</groupI ...

  8. java读文件几种方式_java中读取文件的方式有哪几种

    java中读取文件的方式有哪几种 发布时间:2020-06-19 13:36:48 来源:亿速云 阅读:135 作者:鸽子 读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和 ...

  9. php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...

    php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...

最新文章

  1. win10系统的qq无网络连接网络连接到服务器,Win10系统下误报无法连接internet该怎么办?新手速看...
  2. 利用shell监控cpu、磁盘、内存使用率
  3. Android数据之Json解析
  4. JavaScript上传图片及时预览
  5. (转) Arcgis for js之WKT和GEOMETRY的相互转换
  6. ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable
  7. Hyperledger Fabric 节点类型Commiter、Endorser、Leader、Anchor
  8. [转]How do I use variables in Oracle SQL Developer?
  9. 190726每日一句
  10. U盘数据丢失后怎样恢复
  11. 分布式系统架构、微服务架构等架构区别
  12. 阿里双十一购物节背后的技术问题
  13. 桌面计算机休眠快捷键,Win7怎么在桌面创建休眠快捷方式|win7休眠快捷键
  14. 定积分及其应用知识点总结_高中定积分知识点总结
  15. 计算机蓝屏无法启动代码50,win7系统出现蓝屏代码0x0000050怎么解决
  16. KeyguardBouncer启动流程
  17. abs和pc混在一起怎么解决_PC和ABS塑料使用中常见问题的分析及其解决办法
  18. android可拖拽九宫格,微信小程序实现九宫格图片拖拽
  19. 宽带和网线有什么区别?
  20. 一、在GPU上执行运算

热门文章

  1. win7装sql2000找不到服务器,win7系统安装SQLServer2000的详细步骤(图文)
  2. Kotlin 开发Android app(四):Kotlin 四大容器Set,Array,List,Map
  3. mysql executebatch_Mysql批量插入executeBatch测试
  4. 分布式系统原理(9)Paxos 协议
  5. 2440开发板恢复出厂设置
  6. 迈拓恢复出厂设置图解_如何把硬盘恢复出厂设置
  7. echarts地图上的标签为图片_PyEcharts——地图-数据可视化
  8. Win7 D盘没了:DiskGen 指派驱动器号时出现错误(00000002)系统找不到指定的文件
  9. Oracle Database 11g安装时显示[INS-13001]环境不满足最低要求。
  10. vue 在IE11中报错 “对象不支持“assign”属性或方法”