Add Support For All Value Querying.

This commit is contained in:
Kirigaya Kazuto 2017-03-29 15:52:04 +08:00
parent 49ef7423a6
commit b9250a7ed1

View File

@ -15,7 +15,7 @@
using namespace std; using namespace std;
double parseValue(string Filename) int parseValue(string Filename,double& val,double& val2)
{ {
printf("Filename : %s\n",Filename.c_str()); printf("Filename : %s\n",Filename.c_str());
@ -27,23 +27,48 @@ double parseValue(string Filename)
string target="amt"; string target="amt";
string::size_type ans=s.find(target); string::size_type ans=s.find(target);
printf("Found in ... %u\n",ans); printf("Found value 1 in ... %u\n",ans);
if(ans==string::npos) if(ans==string::npos)
{ {
return -2; return -2;
} }
istringstream istr(s.substr(ans+7)); istringstream istr(s.substr(ans+7));
double a=-1; double a=-1;
istr>>a; istr>>a;
return a;
ans=s.find(target,ans+target.size());
printf("Found value 2 in ... %u\n",ans);
if(ans==string::npos)
{
return -3;
} }
double LocalParse(int id) istr.str(s.substr(ans+7));
double b=-1;
istr>>b;
val=a;
val2=b;
return 0;
}
struct cashinfo
{
cashinfo(bool Status=false,double Current=0,double TransForming=0):status(Status),current(Current),transforming(TransForming){}
bool status;
double current;
double transforming;
};
cashinfo LocalParse(int id)
{ {
char buff[1024]; char buff[1024];
sprintf(buff,"data/%d.txt",id); sprintf(buff,"data/%d.txt",id);
string Filename(buff); string Filename(buff);
return parseValue(Filename); cashinfo info;
info.status=(parseValue(Filename,info.current,info.transforming)==0);
return info;
} }
void prepareCookie() void prepareCookie()
@ -93,8 +118,10 @@ void RemoteQuery(string PreCode,int ID)
this_thread::sleep_for(chrono::seconds(rand()%3+1)); this_thread::sleep_for(chrono::seconds(rand()%3+1));
} }
#define HEAD_STR "15080901" #define HEAD_STR "15080801"
#define NUM 40 #define NUM 5
int main() int main()
{ {
@ -115,14 +142,14 @@ int main()
} }
printf("查询完成,开始解析...\n"); printf("查询完成,开始解析...\n");
vector<double> vec; vector<cashinfo> vec;
queue<pair<int,int>> needrefetch; queue<pair<int,int>> needrefetch;
for(int i=0;i<NUM;i++) for(int i=0;i<NUM;i++)
{ {
printf("解析第 %d of %d\n",i+1,NUM); printf("解析第 %d of %d\n",i+1,NUM);
double val=LocalParse(i+1); cashinfo val=LocalParse(i+1);
if(val==-2) if(!val.status)
{ {
needrefetch.push(make_pair(i+1,0)); needrefetch.push(make_pair(i+1,0));
} }
@ -145,8 +172,8 @@ int main()
int id=pack.first; int id=pack.first;
printf("重新获取ID: %d\n",id); printf("重新获取ID: %d\n",id);
RemoteQuery(HEAD_STR,id); RemoteQuery(HEAD_STR,id);
double val=LocalParse(id); cashinfo val=LocalParse(id);
if(val==-2) if(!val.status)
{ {
printf("重新获取ID: %d 失败.\n",id); printf("重新获取ID: %d 失败.\n",id);
@ -171,14 +198,16 @@ int main()
getline(cin,fname); getline(cin,fname);
s_time now=whattime(); s_time now=whattime();
char gpbuff[1024]; char gpbuff[1024];
sprintf(gpbuff,"%04d%02d%02d%02d%02d%02d",now.year,now.mon,now.day,now.hour,now.min,now.sec); sprintf(gpbuff,"-%04d%02d%02d-%02d%02d%02d",now.year,now.mon,now.day,now.hour,now.min,now.sec);
fname+=".txt"; fname.append(gpbuff);
fname.append(".txt");
printf("正在保存到 %s\n",fname.c_str()); printf("正在保存到 %s\n",fname.c_str());
ofstream ofs(fname); ofstream ofs(fname);
for(size_t i=0;i<vec.size();i++) for(size_t i=0;i<vec.size();i++)
{ {
ofs<<i+1<<" "<<vec.at(i)<<endl; if(vec.at(i).status) ofs<<i+1<<" "<<vec.at(i).current<<" "<<vec.at(i).transforming<<endl;
else ofs<<i+1<<" -1 -1"<<endl;
} }
ofs.flush(); ofs.flush();