解析文件或者字符串,一key跟keyvalue来存在map中,如下代码:

test.h:

#include <map>
#include <vector>

Class test

{

public:

void list_Map();

private:

map<string,string> pensonnel;
map<string,string>::iterator iter;

}

test.cpp:

void test::list_Map()

{

ifstream infile;
infile.open("D:\\XX.dpi");
char buffer[1024]={0};
int i=0;
int chang_first=0;
int chang_last=0;
int value_first=0;
int value_last=0;
char key_tag[10]={0};
char value_tag[1024]={0};
if (!infile)
{
return false;

}
while (!infile.eof() )
{
infile.getline (buffer,1024);

i = StringFind(buffer,"Name");

if(i!=-1)
{
chang_first = StringFind(buffer,"\"");
chang_last = StringFind(buffer,"Length");
memcpy(key_tag,buffer+chang_first+1,chang_last-2-chang_first-1);
value_first = StringFind(buffer,"\">");
value_last = StringFind(buffer,"</DGI>");
memcpy(value_tag,buffer+value_first+2,value_last-2-value_first);
string key_string(key_tag);
string value_string(value_tag);
cout<<"insert:"<<key_string<<","<<value_string<<endl;
pensonnel.insert(pair<string, string>(key_string, value_string));

}

}
printf("mapsize=%d\n",pensonnel.size());

for(iter=pensonnel.begin();iter !=pensonnel.end();iter++)
{
cout<<i<<":"<<iter->first<<", "<<iter->second<<endl;
}

}

其中文件XX.dpi内容为:

<?xml version="1.0" encoding="GBK" ?>
<PersoFile>
<CardCounter>5</CardCounter>
<Version>1</Version>
<CardType>0001</CardType>
<Reserve></Reserve>
<CardData>

<AID Length="8">A000000632010105</AID>

<DGI Name="0015" Length="30">02195510FFFFFFFF02000310482000000000080120180704202807040101</DGI>
<DGI Name="0016" Length="55">00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</DGI>
<DGI Name="0017" Length="60">000001565500551000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</DGI>

<Print Type="PAN">310482 00 0000000080 5</Print>
<Print Type="ExpDate">07/18</Print>
<Print Type="EffDate">07/28</Print>

</CardData>

</PersoFile>

C++之map使用的更多相关文章

  1. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  2. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  3. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  4. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. 多用多学之Java中的Set,List,Map

            很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ...

  6. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  7. MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析

    在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...

  8. MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程

    在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...

  9. MapReduce剖析笔记之五:Map与Reduce任务分配过程

    在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...

  10. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

随机推荐

  1. Tomcat Server启动报错:Multiple Contexts have a path of "/east".

    原因是 conf/server.xml 文件中多了一个<Context></Context>标签,路径有重复,把他删掉就好了.

  2. HDU1811 拓扑排序判环+并查集

    HDU Rank of Tetris 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1811 题意:中文问题就不解释题意了. 这道题其实就是一个拓扑排序判圈 ...

  3. Golang开发支持平滑升级(优雅重启)的HTTP服务

    Golang开发支持平滑升级(优雅重启)的HTTP服务 - tabalt的博客 http://tabalt.net/blog/graceful-http-server-for-golang/ http ...

  4. iros2016-Monday 10/10/2016

    Workshop Day Integrating Multiple Knowledge Representation and Reasoning Techniques in Robotics (MIR ...

  5. PHP 创建中文目录的情况

    因为一个作业需要创建一些中文的目录,其实主要还是考虑一下编码问题. 首先确认下系统环境是什么编码,如果是gbk或者GB2312那就需要转下码,还有些特殊字符,就需要有个特殊的写法. iconv('UT ...

  6. 解决Xshell中使用hbase shell backspace无法删除

    进入到XShell 文件 –> 属性 –> 终端 –> 键盘 在 DELETE键序列 和 BACKSPACE键序列 中都选择 ASCII 127 最后进入 Hbase 命令行测试,可 ...

  7. C. Mail Stamps---cf29c(离散化,图)

    题目链接:http://codeforces.com/problemset/problem/29/C 题意就是有n(1e5)个点,找到一条能把所有的点都包含在内的路径,由于点的编号是 1e9 所以不得 ...

  8. CF#301 B:School Marks(贪心)

    B:School Marks 有n个测试,已经完成了k个,每个测试得分为a[i],接下来的分数不知道,让我们求出任何一个满足题意的即可,满足题意就是n个测试的得分总和<=x, 中位数>=y ...

  9. 14.Iterate a Cursor in the mongo Shell-官方文档摘录

    1 迭代游标 } ); while (myCursor.hasNext()) { print(tojson(myCursor.next())); } } ); myCursor.forEach(pri ...

  10. oracle入门(7)——存储过程

    [本文介绍] 熟悉了PL/SQL语法后,实现java调用oracle存储过程才是主要目的.本文将介绍如何写存储过程,java如何调用存储过程. [存储过程介绍] 抛开专业的描述,存储过程就是在数据库里 ...