string strContent ="101;231;54;3;";
string strTmp;
std:vector<uint32> itemVec;
char szContentItem[128];
string::szie_type nIndex;
while((nIndex = strContent.find(";")) != string::npos)
{
int num;
strTmp = strContent.substr(0,nIndex);
strncpy(szContentItem,strTmp.c_str(),strTmp.length()+1);
sscanf(szContentItem,"%d",&num);
itemVec.push_back(num);
strContent=strContent.substr(nIndex+1);
}
这里有几个知识点
string:size_type在不同的机器上长度是可以不同的
我们在使用string::find函数的时候,它返回的是找到的第一个匹配的下标,从0开始,比如24;;785;;2
找;; 则返回的值为2
当find找不到所需要的字符时,返回npos
string是以\0结尾的,如果string s = "hello \0 world";
cout<<s<<endl;
则只会输出hello
如果要把整个string的内容复制,长度必须是length()+1,得把\0复制进来
sscanf是从一个字符串读进与指定格式相符的数据