class ErrorCodeConfig{
public:
ErrorCodeConfig(){}
ErrorCodeConfig(const ErrorCodeConfig&)=delete;
ErrorCodeConfig &operator=(const ErrorCodeConfig&) = delete;
~ErrorCodeConfig(){}
bool FindErrorCodeStr(/*out*/string &strError,int error_code, int Module,string file_path);
private:
bool ReadMsgFromjson(string path);
string strErrorMsg_;
};
bool ErrorCodeConfig::ReadMsgFromjson(string path)
{
ifstream read_file(path.c_str(), ios::binary);
if (read_file.is_open()){
/*send_data = csv_data;*/
istream::pos_type current_pos1 = read_file.tellg();//记录下当前位置
read_file.seekg(, ios_base::end);//移动到文件尾
istream::pos_type file_size1 = read_file.tellg();//取得当前位置的指针长度->即文件长度
read_file.seekg(, ios_base::beg);//移动到原来的位置
if (file_size1 > )
{
char* data1 = new char[file_size1];
memset(data1, , file_size1);
read_file.read(data1, file_size1 * sizeof(char));
strErrorMsg_ =std::move(string(data1, file_size1));
read_file.close();
delete[] data1;
data1 = nullptr;
return true;
}
read_file.close();
}
return false;
}
bool ErrorCodeConfig::FindErrorCodeStr(string &strError, int error_code, int Module, string file_path)
{
if ( == strErrorMsg_.size())
{
if (!ReadMsgFromjson(file_path))
{
return false;
}
}
string str_err;
switch (Module)
{
case MODULE3:
str_err = "MODULE3" + std::to_string(error_code);
break;
case MODULE2:
str_err = "MODULE2" + std::to_string(error_code);
break;
case MODULE1:
str_err = "MODULE1" + std::to_string(error_code);
break;
default:
str_err = error_code;
break; }
string::size_type p = strErrorMsg_.find(str_err);
if (p == string::npos)
{
return false;
}
string::size_type maohao = strErrorMsg_.find(":", p);
if (maohao == string::npos)
{
return false;
}
string::size_type left_fen = strErrorMsg_.find("\"", maohao + );
if (left_fen == string::npos)
{
return false;
}
string::size_type right_fen = strErrorMsg_.find("\"", left_fen + );
if (right_fen == string::npos)
{
return false;
}
strError = strErrorMsg_.substr(left_fen + , right_fen - left_fen-);
if (==strError.size())
{
return false;
} //查找错误码大于一个的情况
string::size_type pos_last = right_fen;
string::size_type pos_now = string::npos;
while (-!=(pos_now = strErrorMsg_.find(str_err, pos_last)))
{
//此处阈值给100,防止error_1下面出现k_error_1,一行数据不会超过100字节
if (pos_now - pos_last > )
{
//走到此处也算找到错误码
return true;
} maohao = strErrorMsg_.find(":", pos_now);
if (maohao == string::npos)
{
return false;
}
left_fen = strErrorMsg_.find("\"", maohao + );
if (left_fen == string::npos)
{
return false;
}
right_fen = strErrorMsg_.find("\"", left_fen + );
if (right_fen == string::npos)
{
return false;
}
strError += strErrorMsg_.substr(left_fen + , right_fen - left_fen - );
pos_last = right_fen;
}
if ( == strError.size())
{
return false;
}
return true;
}

记录c++本地文件读取组装的更多相关文章

  1. 本地文件读取(csv,txt)时字符编码问题解决

    今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现 ...

  2. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)

    Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...

  3. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)

    Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...

  4. java写入内容到本地文件 -读取文件内容

    /** 日志记录 * @author sys * @param content 要写入的类容 * @param path 目标路径 c:/log/ * @param filename 文件名 log. ...

  5. 组合拳 | 本地文件包含漏洞+TFTP=Getshell

    文章声明 安全文章技术仅供参考,此文所提供的信息为漏洞靶场进行渗透,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作. 本文所提供的工具仅用于学习,禁止用于其他,未经授权,严禁转载,如需转 ...

  6. OC 将NSString写入本地文件

    最近在公司偶尔遇到一些不经常复现的bug,为了调试,只好把关键值记录到本地文件中,在遇到问题时,调出本地文件查看一下就可以很方便的知道是不是代码逻辑的错误或者问题考虑不够周全了. 废话不多说,流程在代 ...

  7. Spark保存到HDFS或本地文件相关问题

    spark中saveAsTextFile如何最终生成一个文件 http://www.lxway.com/641062624.htm 一般而言,saveAsTextFile会按照执行task的多少生成多 ...

  8. (转)javabean操作文件正确,但是Jsp调用javabean时文件路径出错问题解决之JavaBean访问本地文件实现路径无关实现方法

        在JSP中,页面链接是使用web路径的,但如果JavaBean要访问本地文件读取配置信息的话,是需要文件的本地路径的.如果你在写 Bean的时候直接将本地路径写进去,那网站的路径就不能变化,丧 ...

  9. HTML5 本地文件操作之FileSystemAPI简介

    一.FileSystemAPI简介 HTML5的文件操作Api中 1.FileAPI,用于基础的客户端本地文件读取,目前大多数接口已经被主流浏览器支持,点击查看更多参考 2.FileSystemAPI ...

随机推荐

  1. java 基础 --- volatile

    问题  : volatile 解决的是什么问题 有什么应用场景 概述 某些共享变量的时候我们使用volatile 修饰,它会保证修改的值立即被更新到主存,或是从主存中获取最新的值.它的底层是如何实现的 ...

  2. android FrameLayout

    FrameLayout:帧布局,可以显示图片的动画效果 前景图像: 永远处于帧布局最顶的,直接面对用户的图像,,就是不会被覆盖的图片 常用属性: android:foreground:设置该帧布局容器 ...

  3. DLL文件

    Dll文件的全称是Dynamic Link Library,中文意思为动态链接库,DLL文件是不可执行文件,其是一个包含由多个程序同时使用的代码和数据的库,动态链接提供了一种方法,使进程可以调用不属于 ...

  4. JDBC处理事务

    一.什么是事务? 在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 二.事务是必须满足4个条件(AC ...

  5. JavaScript自定义字符串格式化

    在JS中没有字符串拼接的方法,如过要使用怎么办呢?这时我们可以通过字符串的prototype可以自定义方法. <script> String.prototype.format = func ...

  6. 面向对象第四章(封装、static)

    1.package: 1)作用:避免类名的冲突 2)包名可以有层次结构 3)类的全称: 包名.类名,同包中的类不能同名 4)建议:包名所有字母都小写 import: 1)同包中的类可以直接访问, 不同 ...

  7. 用java访问Oracle数据库、取得记录并输出到界面

    Class.forName(“oracle.jdbc.driver.OracleDriver”);Connection conn=DriverManager.getConnection( url , ...

  8. EntityFramework(1)

    EntityFramework核心是EDM实体数据模型,该模型由三部分组成. (1) 概念模型,由概念架构定义语言文件(.csdl)来定义. (2) 映射,由映射规范语言文件(.msl)定义. (3) ...

  9. 转:使用VS Code断点调试PHP

    使用VS Code断点调试PHP vs code 使用一款杰出的轻量级代码编辑器,其中的插件工具不胜枚举而且还在不断增加.使用 vs code 调试 PHP 代码更是方便简洁,下面我们来一起看一下. ...

  10. OllyDbg的基本使用

    注:内容整理自<逆向工程核心原理>,结合我的OllyDbg版本修改了一些内容 1. OllyDbg常用命令及其快捷键 指令 快捷键 含义 Restart Ctrl+F2 重新开始调试 St ...