关闭

一道字符串解析题

标签: stringnulluserbufferpaircmd
947人阅读 评论(1) 收藏 举报
分类:
题目
我从网络收到一段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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:263874次
    • 积分:3615
    • 等级:
    • 排名:第9030名
    • 原创:81篇
    • 转载:6篇
    • 译文:5篇
    • 评论:94条
    文章分类
    最新评论
    My Favorite Links