题目:
我从网络收到一段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">
解法:
下面给出数据拆分办法:
自我评价:
可能偶这个版本费用是最低的。
字段个数不限,字段值所含字符不限
其他解法参考:
http://community.csdn.net/Expert/TopicView3.asp?id=5765713
我从网络收到一段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 *p = string + strlen(string);
char* pKey = NULL;
char* pVal = NULL;
while (p >= string)
{
if (*p == ':')
{
pVal = p+1;
*p = '/0';
}
else if (*p == ' /n' && pVal)
{
pKey = p+1;
*p = '/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);
}
char string[] = "USER: nonocast/nPWD: 123456/nCMD:/naaaaa/nbbbbb/ncccccc/n " ;
int main( void )
{
char *p = string + strlen(string);
char* pKey = NULL;
char* pVal = NULL;
while (p >= string)
{
if (*p == ':')
{
pVal = p+1;
*p = '/0';
}
else if (*p == ' /n' && pVal)
{
pKey = p+1;
*p = '/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