hur.cn - 华软网

 热门搜索

如何解析字符串?

  作者:未知    来源:网络    更新时间:2011/6/11
刚开始学习编程,碰到如下问题:
有一个字符串如下:
loginuser=qqqqqq;UserID=266; UserID__Md5=d6ac5df06e4b8dc1; LoginTime=1307757031; LoginTime__ckMd5=ca8565b28708ce1e;SESSID=dd80d53392b6ba859926663a6a8ee7fe

我想做一个函数:
函数的入口参数1是等号前面的字符串,如上面的loginuser,UserID__Md5等,
函数的入口参数2是源字符串,
函数实现的功能是根据入口参数输出该参数的值,例如输入参数是loginuser,则输出qqqqqq.
函数的返回值,就是输入参数的取值.

C++">
CString find_vale(CString name,CString source)
{
    CString  value;//返回值

    ...........   //这里的代码如何编写
    .......... 

    return value;
}




请问如何用MFC实现?
---华软 网友回答---
全大写或全小写之后,String::find之类的函数。

---华软网友回复---
引用 1 楼 jennyvenus 的回复:
全大写或全小写之后,String::find之类的函数。


这个知道,请给出具体代码
---华软网友回复---
C++">
CString find_vale(CString name,CString source)
{
    CString result_str = "";//返回的结果
    CString s_find= name;   //要查找的
    int pos  = source.Find(s_find); //在源中查找
    if(-1==pos)
    {
   return  ""; //没有找到,直接返回空
    }
    int pos_end  = souce.Find(";",pos); //找到结束位置
    if(-1==pos_end)
    {
        pos_end = souce.GetLength(); //最后没有分号,因此 使用总长度
    }
    int length = s_find.GetLength(); //name的长度
    result_str = souce.Mid(pos+length+1,pos_end-pos-length-1); //截取
    
    return  result_str;

}



---华软网友回复---
3个函数 Find(从左边寻找), ReverseFind(从右边寻找), MID(剪切)
---华软网友回复---
修改一下,变量定义的问题
C++">

CString find_vale(CString name, CString source)
{
    CString result_str = "";//返回的结果
    CString s_find= name;   //要查找的
    int pos  = source.Find(s_find); //在源中查找
    if(-1==pos)
    {
       return  ""; //没有找到,直接返回空
    }
    int pos_end  = source.Find(";",pos); //找到结束位置
    if(-1==pos_end)
    {
        pos_end = source.GetLength(); //最后没有分号,因此 使用总长度
    }
    int length = s_find.GetLength(); //name的长度
    result_str = source.Mid(pos+length+1,pos_end-pos-length-1); //截取
    
    return  result_str;
}



---华软网友回复---
CString find_vale(CString name,CString source)
{
CString value;
if (name == NULL || *name == 0)
{
CString sErr = "Please input the name of string";
return sErr;
}

LPCTSTR psFind;
LPCTSTR psPara=LPCTSTR(source);
int nLen=strlen(name);
value.Empty();
while(true)
{
psFind=strchr(psPara,';');
if(!strnicmp(psPara,name,nLen) && psPara[nLen]=='=')
{
psPara+=nLen+1;
if(psFind)
value=CString(psPara,psFind-psPara);
else
value=psPara;
break;
}
if(psFind)
psPara=psFind+1;
else
break;
}
return value;
}
---华软网友回复---
楼主可以改下文本的格式的 可以一行放一个section


根据存放的内容,最好是使用ini文件,MS提供了专门的读写API:WritePrivateProfileString等。很方便的。楼主可以试试
---华软网友回复---
引用 7 楼 kuyucman 的回复:
楼主可以改下文本的格式的 可以一行放一个section


根据存放的内容,最好是使用ini文件,MS提供了专门的读写API:WritePrivateProfileString等。很方便的。楼主可以试试


格式是cookie的格式,不是我决定的.
实际是 简单的解析cookie ..

感谢各位的参与,结帖      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。