不好意思,最近比较,好长时间没有上来了。
代码如下:
#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;
}