记录c++本地文件读取组装
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++本地文件读取组装的更多相关文章
- 本地文件读取(csv,txt)时字符编码问题解决
今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现 ...
- 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)
Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...
- 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)
Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...
- java写入内容到本地文件 -读取文件内容
/** 日志记录 * @author sys * @param content 要写入的类容 * @param path 目标路径 c:/log/ * @param filename 文件名 log. ...
- 组合拳 | 本地文件包含漏洞+TFTP=Getshell
文章声明 安全文章技术仅供参考,此文所提供的信息为漏洞靶场进行渗透,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作. 本文所提供的工具仅用于学习,禁止用于其他,未经授权,严禁转载,如需转 ...
- OC 将NSString写入本地文件
最近在公司偶尔遇到一些不经常复现的bug,为了调试,只好把关键值记录到本地文件中,在遇到问题时,调出本地文件查看一下就可以很方便的知道是不是代码逻辑的错误或者问题考虑不够周全了. 废话不多说,流程在代 ...
- Spark保存到HDFS或本地文件相关问题
spark中saveAsTextFile如何最终生成一个文件 http://www.lxway.com/641062624.htm 一般而言,saveAsTextFile会按照执行task的多少生成多 ...
- (转)javabean操作文件正确,但是Jsp调用javabean时文件路径出错问题解决之JavaBean访问本地文件实现路径无关实现方法
在JSP中,页面链接是使用web路径的,但如果JavaBean要访问本地文件读取配置信息的话,是需要文件的本地路径的.如果你在写 Bean的时候直接将本地路径写进去,那网站的路径就不能变化,丧 ...
- HTML5 本地文件操作之FileSystemAPI简介
一.FileSystemAPI简介 HTML5的文件操作Api中 1.FileAPI,用于基础的客户端本地文件读取,目前大多数接口已经被主流浏览器支持,点击查看更多参考 2.FileSystemAPI ...
随机推荐
- HDFS常用shell命令
注,其实常用命令不用网上搜,和linux下的命令很类似,触类旁通,直接在linux 上 hadoop fs 看一下就行了,不需要刻意去记我把 linux 上的 help 列举下,方便直接看吧,hdfs ...
- android子线程更新UI
参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...
- JS数组和函数 小记
数组 JS中的数组来自window,是一个全局的对象,typeof的值是'object'. 创建数组: 1.Array(3):当只传一个值的时候,会生成一个长度为该数值的空数组. 2.Array(3, ...
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
- 微信小程序随笔。笔记本忘家里了
所有ui组件都有的共有属性id.class.style.hidden.data-*.bind* / catch*.
- D3基础--数轴
转载请注明出处! 概述: 与比例尺类似,D3的数轴实际上也使用来定义参数的函数.但与比例尺不同的是,调用数轴函数并不会返回值,而是会生成数轴相关的可见元素.包括:轴线,标签和刻度. 但是要注意数轴函数 ...
- 安装node.js webkit环境[一]
1. 安装node,设置代理npm config set registry https://registry.npm.taobao.org[cmd运行]2. 安装grunt-cli: npm inst ...
- ASP.NET之HTML
1.什么是html 用来描述网页的2.开发工具我们肯定是用vs啦3.img src 图片地址 <img src="img/aa.bmp" />; 4.超链接a标签 hr ...
- Django(二):url和views
网络通讯的本质是socket,从socket封装到MVC模式,参见另外几篇博客.本节笔记整理自Django2.0官方文档. 一.url调度器 - django.urls.path django2.0中 ...
- 第一章Bootstrap简介
一.Bootstrap简介 Bootstrap是基于 HTML.CSS.JAVASCRIPT 的前端框架,它简洁灵活,使得 Web 开发更加快捷.它由Twitter的设计师Mark Otto和Jaco ...