一道字符串解析题

题目
我从网络收到一段buffer
USER: nonocast/nPWD: 123456/nCMD:/naaaaa/nbbbbb/ncccccc/n

然后我想将他转换成一个字典(Hash表,Map都ok)
std::map<string, string>
变成如下的pair
<"USER", "nonocast">
<"PWD", "123456">
<"CMD", "aaaaaa/nbbbbb/ncccccc/n">

解法
下面给出数据拆分办法:

#include  < stdio.h >

char  string[]  =   "USER: nonocast/nPWD: 123456/nCMD:/naaaaa/nbbbbb/ncccccc/n " ;

int  main(  void  )
{
    
char *= string + strlen(string);
    
char* pKey = NULL;
    
char* pVal = NULL;
    
while (p >= string)
    
{
        
if (*== ':')
        
{
            pVal 
= p+1;
            
*= '/0';
        }

        
else if (*== ' /n' && pVal)
        
{
            pKey 
= p+1;
            
*= '/0';

            
// print pair
            printf("%s : %s ", pKey, pVal);

            
// clear pKey&pVal to make a Next Find
            pKey = NULL;
            pVal 
= NULL;
        }


        
--p;
    }

    
// the last pair 
    pKey = p+1;
//    pKey = string;
    printf("%s : %s ", pKey, pVal);
}


自我评价:
    可能偶这个版本费用是最低的。
    字段个数不限,字段值所含字符不限

其他解法参考: 
http://community.csdn.net/Expert/TopicView3.asp?id=5765713
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值