一道字符串解析题

题目
我从网络收到一段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
阅读更多
个人分类: Windows 资料
上一篇如何在Carbide.c++下查看RDebug输出?
下一篇Carbide.c++ On-Device Debug(ODD) 资源
想对作者说点什么? 我来说一句

hotel测试数据

2013年05月22日 173KB 下载

没有更多推荐了,返回首页

关闭
关闭