| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1111 人关注过本帖, 1 人收藏
标题:一个字符串查找问题
只看楼主 加入收藏
zzminzzm
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2011-3-21
结帖率:50%
收藏(1)
已结贴  问题点数:0 回复次数:7 
一个字符串查找问题
比如我输入  create -usename  就创建一个用户 和这个用户的名字
       输入 del -usename  删除叫usename的这个用户
        输入 su  -usename  更换用户
搜索更多相关主题的帖子: 字符串 名字 用户 
2011-03-21 23:38
zzminzzm
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2011-3-21
收藏
得分:0 
我开始用if语句  遇到空格的时候就分开  但是发现后面的名字又不好保存
2011-03-21 23:40
zzminzzm
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2011-3-21
收藏
得分:0 
看来我的问题还是没人解决了  
2011-03-22 00:14
陶卫亮
Rank: 2
等 级:论坛游民
帖 子:8
专家分:37
注 册:2010-12-23
收藏
得分:5 
你的分隔符应该是"-",用这个分隔分隔,然后对拆出的字符串去空格,就会得到相应的值,create=>usename  del=>usename  usename    su=>usename,然后建立一个MAP<string, set<string>>的映射,这样你想做什么都行,如果想删除,查找del,得到相应的用户名,删除就可以了
2011-03-22 10:38
shi781203
Rank: 2
来 自:广东省
等 级:论坛游民
帖 子:112
专家分:50
注 册:2011-3-18
收藏
得分:5 
用数组将用户名保存,然后再按楼上的操作做!

飞点燃费盐--历史上至有型的计算机病毒(能感染你是我的荣幸,也是你的光荣!)
2011-03-22 17:06
zzminzzm
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2011-3-21
收藏
得分:0 
以下是引用陶卫亮在2011-3-22 10:38:08的发言:

你的分隔符应该是"-",用这个分隔分隔,然后对拆出的字符串去空格,就会得到相应的值,create=>usename  del=>usename  usename    su=>usename,然后建立一个MAP>的映射,这样你想做什么都行,如果想删除,查找del,得到相应的用户名,删除就可以了
能不能再讲清楚点  或者弄点代码出来  谢谢
2011-03-22 21:29
zzminzzm
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2011-3-21
收藏
得分:0 
回复 4楼 陶卫亮
能不能说清楚点  或者弄点代码出来  谢谢
2011-03-22 21:30
陶卫亮
Rank: 2
等 级:论坛游民
帖 子:8
专家分:37
注 册:2010-12-23
收藏
得分:0 
不好意思,最近比较,好长时间没有上来了。
代码如下:

#include <string>
#include <set>
#include <map>
#include <algorithm>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    string  strBuffer[3] = {"create -usename", "del -usename", "su  -usename"};

    string strKey;
    string strValue;

    char pszBuffer[1024];        //这用1024=1K,应该够用了,如果不够用,请自己扩充

    map<string, set<string>> mapContainer;

    for ( int i = 0; i < 3; i++)
    {
        int iLen = strBuffer[i].length();
        if ( iLen > 1024)
        {
            printf( "数组放不下,请扩展数组");
            continue;
        }
        memset(pszBuffer,0, 1024);
        strcpy(pszBuffer,  strBuffer[i].c_str());

        //先判断是否有分隔符"-"
        char *pszSeparator = strstr( pszBuffer, "-");
        if (pszSeparator == NULL)
        {
            continue;
        }

        //strtok解析完成后,数据的内容分别放在了俩个变量中,一个是pszTemp,一个是pszBuffer;
        char *pszTemp = strtok( pszBuffer, "-");
        if(pszTemp != 0)
        {
            strKey = pszTemp;
        }
        pszTemp = strtok(NULL, "-");
        if ( pszTemp != NULL )
        {
            strValue = pszTemp;
        }
        
        //去掉key后面的空格
        while(1)
        {
            int iPos = strKey.rfind(' ');
            if ( iPos > 0)
            {
                strKey = strKey.substr(0,iPos);
            }
            else
            {
                break;
            }
        }
        //去掉Value后面的空格
        while(1)
        {
            int iPos = strValue.rfind( ' ');
            if ( iPos > 0)
            {
                strValue = strValue.substr(0, iPos);
            }
            else
            {
                break;
            }
        }
        
        //要把key转换成小写,以防出现找不到的情况,如Create 与create是不相同的
        transform(strKey.begin(), strKey.end(), strKey.begin(), tolower);
        

        //把解析出的内容放到容器中
        map<string, set<string> >::iterator iter = mapContainer.find( strKey);
        if ( iter == mapContainer.end())
        {
            set<string> setTemp;
            setTemp.insert( strValue );
            mapContainer.insert( make_pair( strKey, setTemp ) );
        }
        else
        {
            iter->second.insert( strValue );
        }
    }
    //后面就是利用容器中的内容,做你想的事情
    return 0;
}
2011-03-27 18:26
快速回复:一个字符串查找问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047107 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved