记录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 ...
随机推荐
- JAVA练手--集合
集合框架体系如图所示 Collections:是一个工具类java.util.Collections(可以使用它对集合对象进行操作) Collection:除了map(键值对)其他集合的父类 1. S ...
- IOS多选单选相册图片
之前做项目让实现多选相册的图片,自己写了一个demo一直保存在电脑上,今天下午发现电脑128G的容量已经快没有了,准备清理电脑,所以把之前做的一些demo放在博客上,以后方便用. 1.首先准备3个图片 ...
- 【angular5项目积累总结】遇到的一些问题以及解决办法
1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...
- .NET中的集合-ArrayList1
集合命名空间: using.System.Collections;(非泛型集合) using.System.Collections.Genneric(泛型集合) 常用的集合 1.“类似数组”集合:Ar ...
- C# 请求Https
/// <summary> /// Get请求 /// </summary> /// <param name="Url"></param& ...
- 安装vmware player
一.简介 什么是虚拟机? 虚拟机是通过软件来模拟一个完整的计算机系统.简单来说,你可以在当前系统中通过虚拟机软件运行另外一个系统,并且与当前系统隔离. 什么是vmware? vmware(virtua ...
- sprintf 格式化字符串
好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下 定义和用法 sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处 ...
- MapReduce详解和WordCount模拟
最早接触大数据,常萦绕耳边的一个词「MapReduce」.它到底是什么,能做什么,原理又是什么?且听下文讲解. 是什么 MapReduce 即是一个编程模型,又是一个计算框架,它充分采用了分治的思想, ...
- InfluxDB 的卸载与重装
我是通过下面方式安装的,所以卸载也是用的 rpm 的卸载命令 wget http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm su ...
- java 简单计算器
package com.direct.demo; import java.text.DecimalFormat; import java.util.Scanner; public class Calc ...