#include <iostream>
#include <string>
#include <stdlib.h>
#include <string.h>
using namespace std;
//获取json中字段值
long long int GetJsonStrInt64(const string &str,const string cond){
int index = str.find(cond);
if(index == string::npos){
return 0;
}
index+=cond.size()+2; //":55555, 取出55555
int end = str.find_first_of(",]}",index);
if(end == string::npos){
return 0;
}
long long int val= atol(str.substr(index,end-index).c_str());
return val;
}
//获取users,中每个值
void testSplitString(){
string src = "player:0|looker:0|users:1124,3663,2254,0,25,0,|siter:0,0,0,0,0,0,0,0,0,";
int index = src.find("users");
if(index == -1)
{
return ;
}
int end = src.find_first_of('|', index);
int begin = src.find_first_of(':', index);
if (begin==-1 ||end==-1){
return ;
}
string users = src.substr(begin+1,end-begin-1);
cout<<"result="<<users.c_str()<<endl;
char szReply[1024] ;
memcpy(szReply,(char*)users.data(),users.size());
char *strbuf=NULL;
char *savePtr=NULL;
strbuf=strtok_r(szReply,",",&savePtr);
cout<<"uid:";
while( strbuf != NULL ) {
int uid = atol(strbuf);
cout<<uid<<"-";
strbuf =strtok_r(NULL,",",&savePtr);
}
cout<<endl;
}
int main(char* args,char **argv){
string str = "{\"uid\":64564655,\"award\":566321456153,\"time\":45621345455}";
int index = str.find("award");
if(index == string::npos){
return 0;
}
index+=7;
cout<<"index:"<<index<<endl;
int end = str.find_first_of(",}]",index);
if(end == string::npos){
return 0;
}
cout<<"end:"<<end<<" size:"<<str.size()<<endl;
string award=str.substr(index,end-index);
cout<<award<<endl;
long long int awd = GetJsonStrInt64(str,"time");
cout<<awd<<endl;
testSplitString();
return 0;
}
c++ string 切割
最新推荐文章于 2024-07-21 11:20:00 发布