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

引起what(): basic_string::_M_replace_aux问题的一个原因以及解决方法

自己在做一个项目的时候,报了下面的这个问题:

terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_M_replace_aux

经过自己的研究,发现是在读取文件的时候没有加上错误判断。

        通过网站直接访问一个服务器中的一个html文件时,对html文件进行修饰的css,js,favicon.ico文件通样也会被请求。但是我对应的保存前端的文件夹中并没有favicon.ico文件,直接给它拼上与html,css,js文件相同的文件路径前缀导致favicon.ico文件路径错误,打开文件失败。

在读取文件内容的代码中加入判断打开文件失败返回的语句即可解决此问题。

本来读取文件内容的代码我是这样写的:

 static bool read(const std::string& filename, std::string& body){//打开文件std::ifstream ifs(filename, std::ios::binary);//获取文件大小size_t fsize = 0;ifs.seekg(0, std::ios::end);fsize = ifs.tellg();ifs.seekg(0, std::ios::beg);//读取文件所有数据body.resize(fsize);ifs.read(&body[0], fsize);if(!ifs.good()){LOG(ERROR, "file read failed!\n");ifs.close();return false;}//关闭文件ifs.close();return true; }

 加上打开失败判断即可:

 static bool read(const std::string& filename, std::string& body){//打开文件std::ifstream ifs(filename, std::ios::binary);if (ifs.is_open() == false) {LOG(ERROR,"%s file open failed!!", filename.c_str());return false;}//获取文件大小size_t fsize = 0;ifs.seekg(0, std::ios::end);fsize = ifs.tellg();ifs.seekg(0, std::ios::beg);//读取文件所有数据body.resize(fsize);ifs.read(&body[0], fsize);if(!ifs.good()){LOG(ERROR, "file read failed!\n");ifs.close();return false;}//关闭文件ifs.close();return true; }

 


http://www.mrgr.cn/news/64989.html

相关文章:

  • python项目实战 小说下载源码
  • 如何选择最适合的消息队列?详解 Kafka、RocketMQ、RabbitMQ 的使用场景
  • SpringBoot学生请假系统:从零到一的构建过程
  • CSS Text(文本)
  • HTML 基础概念:什么是 HTML ? HTML 的构成 与 HTML 基本文档结构
  • Python pyautogui库:自动化操作的强大工具
  • Mysql开发规范
  • Java项目实战II基于Spring Boot的文理医院预约挂号系统的设计与实现(开发文档+数据库+源码)
  • nfs作业
  • 目录的简介和rest api规范
  • 组织架构图
  • *网课记录*
  • Cocos使用精灵组件显示相机内容
  • qt管理系统框架(好看界面)
  • 初知C++:继承
  • dns主从服务器的配置
  • 几行命令教你快速安装并配置GitLab
  • 29.3 准备工作,编写配置文件,解析配置,校验正则,设置log
  • Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性
  • 面试题整理 4
  • 深入理解Transformer中的位置编码
  • 斩!JavaScript语法进阶
  • 【stm32】RTC时钟的介绍与使用
  • 详解K8S--声明式API
  • C++之多态的深度剖析(2)
  • 环境报错:/usr/local/cuda/bin/nvcc: No such file or directory 错误