记录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 ...
随机推荐
- C# 相对路径指定详解
1. 根目录 .\\ 或者直接给出文件名称,是找根目录的路径. 如:path = "gs.mdb" 与 path = ".\\gs.mdb"是一个意思. 2. ...
- centos ssh远程登陆
登录Centos6.5系统. ◆示例:使用root用户登录. 注:若为非root用户登录,输入执行某些命权限不够时需加sudo. 查看SSH是否安装. ◆输入命令:rpm -qa | grep s ...
- 撩课-Java每天5道面试题第16天
111.什么是乐观锁(Optimistic Locking)? 悲观锁,正如其名, 它指的是对数据被外界 包括本系统当前的其他事务, 以及来自外部系统的事务处理 修改持保守态度, 因此,在整个数据处理 ...
- JAVA基础之——版本控制系统之git
1 版本控制系统是什么 当多人协作开发一套产品时,需要能够保证代码都能够共用,那么版本控制系统就应运而生. 2 GIT 当前用的比较多的是svn和git,本文以git为例进行讲解. git诞生于200 ...
- 以面向对象的思想实现数据表的添加和查询,JDBC代码超详细
以面向对象的思想编写JDBC程序,实现使用java程序向数据表中添加学生信息,并且可以实现给定身份证号查询学生信息或给定准考证号查询学生信息. 创建的数据表如下: CREATE TABLE EXAMS ...
- docker 卸载
1首先搜索已经安装的docker 安装包 [root@localhost ~]# yum list installed|grep docker 或者使用该命令 [root@localhost ~]# ...
- JDBC处理事务
一.什么是事务? 在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 二.事务是必须满足4个条件(AC ...
- MySQL之单表查询练习
一.emp表 二.练习 1. 查询出部门编号为30的所有员工2. 所有销售员的姓名.编号和部门编号.3. 找出奖金高于工资的员工.4. 找出奖金高于工资60%的员工.5. 找出部门编号为10中所有经理 ...
- textarea的maxlength属性兼容解决方案
IE10版本的textarea才支持maxlength属性:低版本的IE都不兼容,实际上低版本的IE的市场存在率还是很高的: 所以还是很有必要来整合一套解决方案的: Jquery版本 $(functi ...
- LOJ572: Misaka Network 与求和
传送门 假设 \(f^k(i)\) 就是 \(f(i)\) 莫比乌斯反演得到 \[ans=\sum_{i=1}^{N}\lfloor\frac{N}{i}\rfloor^2\sum_{d|i}f(d) ...