本文整理汇总了C++中TStr类的典型用法代码示例。如果您正苦于以下问题:C++ TStr类的具体用法?C++ TStr怎么用?C++ TStr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TStr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: TSBase
/////////////////////////////////////////////////
// Output-Stream
TSOut::TSOut(const TStr& Str):
TSBase(Str.CStr()), MxLnLen(-1), LnLen(0){}
开发者ID:FlyClover,项目名称:movieinf,代码行数:4,代码来源:fl.cpp
示例2: IsHtmlFExt
// file extensions
bool THttp::IsHtmlFExt(const TStr& FExt){
TStr UcFExt=FExt.GetUc();
return ((UcFExt==TFile::HtmlFExt.GetUc())||(UcFExt==TFile::HtmFExt.GetUc()));
}
开发者ID:SherlockYang,项目名称:Archive,代码行数:5,代码来源:http.cpp
示例3: SetChTy
/////////////////////////////////////////////////
// Tql-Lexical-Chars
void TTqlChDef::SetChTy(const TTqlLxChTy& ChTy, const TStr& Str){
for (int ChN=0; ChN<Str.Len(); ChN++){ChTyV[Str[ChN]-TCh::Mn]=TInt(ChTy);}
}
开发者ID:Accio,项目名称:snap,代码行数:5,代码来源:tql.cpp
示例4: GetPrefixArgN
TStr TEnv::GetArgPostfix(const TStr& PrefixStr) const {
int ArgN = GetPrefixArgN(PrefixStr);
IAssert(ArgN != -1);
TStr ArgStr = GetArg(ArgN);
return ArgStr.GetSubStr(PrefixStr.Len(), ArgStr.Len());
}
开发者ID:zzjjzzgggg,项目名称:netsnap,代码行数:6,代码来源:env.cpp
示例5: SetLcCh
void THttpChDef::SetLcCh(const TStr& Str){
for (int ChN=1; ChN<Str.Len(); ChN++){LcChV[Str[ChN]-TCh::Mn]=TCh(Str[0]);}}
开发者ID:SherlockYang,项目名称:Archive,代码行数:2,代码来源:http.cpp
示例6: while
bool TFFile::Next(TStr& FNm){
// if need to recurse
if (!SubFFile.Empty()){
if (SubFFile->Next(FNm)){CurFNm=FNm; CurFNmN++; return true;}
else {SubFFile=NULL;}
}
// for all required file-paths
while (FPathN<FPathV.Len()){
if ((FPathN!=-1)&&(FindNextFile(FFileDesc->FFileH, &FFileDesc->FDesc))){
// next file-name available on the current file-path
TStr FBase=FFileDesc->GetFBase();
if ((RecurseP)&&(FFileDesc->IsDir())){
// file-name is directory and recursion is required
if ((FBase!=".")&&(FBase!="..")){
// directory is non-trivial - prepare sub-file-find for recursion
TStr SubFPath=FPathV[FPathN]+FBase;
TStrV SubFPathV; SubFPathV.Add(SubFPath);
SubFFile=New(SubFPathV, FExtV, FBaseWc, RecurseP);
if (SubFFile->Next(FNm)){CurFNm=FNm; CurFNmN++; return true;}
else {SubFFile=NULL;}
}
} else {
// return file-name if fits
if ((FBase!=".")&&(FBase!="..")){
FNm=FPathV[FPathN]+FBase;
TStr FExt=FNm.GetFExt(); if (!CsImpP){FExt.ToUc(); FBase.ToUc();}
if (((FExtV.Empty())||(FExtV.SearchForw(FExt)!=-1))&&
((FBaseWc.Empty())||(FBase.IsWcMatch(FBaseWc)))){
CurFNm=FNm; CurFNmN++; return true;}
}
}
} else {
// close file-find descriptor if needed
if (FPathN!=-1){
IAssert(FindClose(FFileDesc->FFileH));
FFileDesc->FFileH=INVALID_HANDLE_VALUE;
}
// find next file existing path from the input list
while ((++FPathN<FPathV.Len())&&
((FFileDesc->FFileH=FindFirstFile((FPathV[FPathN]+"*.*").CStr(),
&FFileDesc->FDesc))==INVALID_HANDLE_VALUE)){}
if ((FPathN<FPathV.Len())&&(RecurseP)&&(FFileDesc->IsDir())){
// file-path found, file-name is directory and recursion is required
TStr FBase=FFileDesc->GetFBase();
if ((FBase!=".")&&(FBase!="..")){
TStr SubFPath=FPathV[FPathN]+FBase;
TStrV SubFPathV; SubFPathV.Add(SubFPath);
SubFFile=New(SubFPathV, FExtV, FBaseWc, RecurseP);
if (SubFFile->Next(FNm)){CurFNm=FNm; CurFNmN++; return true;}
else {SubFFile=NULL;}
}
} else {
// return file-name if fits
if (FPathN<FPathV.Len()){
TStr FBase=FFileDesc->GetFBase();
if ((FBase!=".")&&(FBase!="..")){
FNm=FPathV[FPathN]+FBase;
TStr FExt=FNm.GetFExt(); if (!CsImpP){FExt.ToUc(); FBase.ToUc();}
if (((FExtV.Empty())||(FExtV.SearchForw(FExt)!=-1))&&
((FBaseWc.Empty())||(FBase.IsWcMatch(FBaseWc)))){
CurFNm=FNm; CurFNmN++; return true;
}
}
}
}
}
}
// not found
CurFNm=""; CurFNmN=-1; return false;
}
开发者ID:SherlockYang,项目名称:Archive,代码行数:70,代码来源:xfl.cpp
示例7: putenv
void TEnv::PutVarVal(const TStr& VarNm, const TStr& VarVal) {
const int RetVal =
putenv(TStr::Fmt("%s=%s", VarNm.CStr(), VarVal.CStr())
.CStr());
IAssert(RetVal == 0);
}
开发者ID:zzjjzzgggg,项目名称:netsnap,代码行数:6,代码来源:env.cpp
示例8: OnError
void TGgWebFetchSaver::OnError(const int&, const TStr& MsgStr){
printf("Error [Wait:%d Conn.:%d]: %s\n",
GetWaitUrls(), GetConnUrls(), MsgStr.CStr());
if (Empty()){
TSysMsg::Quit();}
}
开发者ID:Accio,项目名称:snap,代码行数:6,代码来源:google.cpp
示例9: printf
/////////////////////////////////////////////////
// Google-Focused-Crawl
PGgFCrawl TGgFCrawl::GetFCrawl(
const TStr& SrcUrlStr, const int& MxCands, const TStr& ProxyStr){
// collect related urls
printf("Expand source URL: %s\n", SrcUrlStr.CStr());
PRSet SrcUrlRSet=
TGg::WebSearch(TStr("related:")+SrcUrlStr, -1, TNotify::NullNotify, ProxyStr);
// create & prepare focused-crawl
PGgFCrawl FCrawl=TGgFCrawl::New();
FCrawl->SrcUrlStr=SrcUrlStr;
FCrawl->DstRSet=TRSet::New(SrcUrlRSet);
// fill hits
for (int HitN=0; HitN<SrcUrlRSet->GetHits(); HitN++){
if ((MxCands!=-1)&&(FCrawl->DstRSet->GetHits()>MxCands)){break;}
TStr HitUrlStr=SrcUrlRSet->GetHitUrlStr(HitN);
printf("Expand URL: %s\n", HitUrlStr.CStr());
PRSet RelUrlRSet=
TGg::WebSearch(TStr("related:")+HitUrlStr, -1, TNotify::NullNotify, ProxyStr);
FCrawl->DstRSet->Merge(RelUrlRSet);
}
// save related urls
//TRSet::SaveXml(DstRSet, OutXmlUrlFNm);
// collect related web-pages
TGgWebFetchSaver WebFetchSaver(100);
WebFetchSaver.PutProxyStr(ProxyStr);
// get source-url web-page
{bool Ok; TStr MsgStr;
TWebFetchBlocking::GetWebPg(
SrcUrlStr, Ok, MsgStr, FCrawl->SrcWebPg, NULL, ProxyStr);
if (!Ok){FCrawl->SrcWebPg=NULL;}}
// get related-urls web-page
int FetchHits=FCrawl->DstRSet->GetHits();
if ((MxCands!=-1)&&(MxCands<FetchHits)){FetchHits=MxCands;}
for (int HitN=0; HitN<FetchHits; HitN++){
TStr HitUrlStr=FCrawl->DstRSet->GetHitUrlStr(HitN);
WebFetchSaver.FetchUrl(HitUrlStr);
}
TSysMsg::Loop();
// save crawled web-pages
for (int WebPgN=0; WebPgN<WebFetchSaver.GetWebPgs(); WebPgN++){
PWebPg WebPg=WebFetchSaver.GetWebPg(WebPgN);
FCrawl->UrlStrToWebPgH.AddDat(WebPg->GetUrlStr(), WebPg);
}
// create bag-of-words
FCrawl->BowDocBs=TBowDocBs::New();
FCrawl->SrcDId=FCrawl->BowDocBs->AddHtmlDoc(
SrcUrlStr, TStrV(), FCrawl->SrcWebPg->GetHttpBodyAsStr());
for (int WebPgN=0; WebPgN<WebFetchSaver.GetWebPgs(); WebPgN++){
PWebPg WebPg=WebFetchSaver.GetWebPg(WebPgN);
FCrawl->BowDocBs->AddHtmlDoc(
WebPg->GetUrlStr(0), TStrV(), WebPg->GetHttpBodyAsStr());
}
// calculate similarities to the source document
PBowDocWgtBs BowDocWgtBs=TBowDocWgtBs::New(FCrawl->BowDocBs, bwwtNrmTFIDF);
PBowSim BowSim=TBowSim::New(bstCos);
FCrawl->SimDIdKdV; FCrawl->SumSim=0;
for (int DIdN=0; DIdN<BowDocWgtBs->GetDocs(); DIdN++){
int DId=BowDocWgtBs->GetDId(DIdN);
if (DId!=FCrawl->SrcDId){
double Sim=BowSim->GetSim(
BowDocWgtBs->GetSpV(FCrawl->SrcDId), BowDocWgtBs->GetSpV(DId));
FCrawl->SimDIdKdV.Add(TFltIntKd(Sim, DId));
FCrawl->SumSim+=Sim;
}
}
FCrawl->SimDIdKdV.Sort(false);
// set crawl ok
FCrawl->Ok=true;
// return focused-crawl
return FCrawl;
}
开发者ID:Accio,项目名称:snap,代码行数:76,代码来源:google.cpp
示例10: GetAuthNmVPubStr
void TGgSchRef::GetAuthNmVPubStr(
const TStr& AuthNmVPubStr, TStrV& AuthNmV, TStr& PubNm, TStr& PubYearStr){
// split input string into two parts
TStr AuthNmVStr; TStr PubStr;
AuthNmVPubStr.SplitOnStr(AuthNmVStr, " - ", PubStr);
// author-names string
AuthNmVStr.SplitOnAllCh(',', AuthNmV, true);
for (int AuthN=0; AuthN<AuthNmV.Len(); AuthN++){
AuthNmV[AuthN].ToTrunc();
}
if ((!AuthNmV.Empty())&&
((AuthNmV.Last().IsStrIn("..."))||(AuthNmV.Last().Len()<=2))){
AuthNmV.DelLast();
}
// publication-name & publication-year string
TStr OriginStr; TStr LinkStr;
PubStr.SplitOnStr(OriginStr, " - ", LinkStr);
OriginStr.SplitOnLastCh(PubNm, ',', PubYearStr);
PubNm.ToTrunc(); PubYearStr.ToTrunc();
if ((PubYearStr.Len()>=4)&&(PubYearStr.GetSubStr(0, 3).IsInt())){
PubYearStr=PubYearStr.GetSubStr(0, 3);
} else
if ((PubNm.Len()>=4)&&(PubNm.GetSubStr(0, 3).IsInt())){
PubYearStr=PubNm.GetSubStr(0, 3); PubNm="";
} else {
PubYearStr="";
}
}
开发者ID:Accio,项目名称:snap,代码行数:28,代码来源:google.cpp
示例11: SetAuthCrawled
void TGgSchBs::SetAuthCrawled(const TStr& AuthNm){
AuthNmToCrawlPH.AddDat(AuthNm.GetLc())=true;
}
开发者ID:Accio,项目名称:snap,代码行数:3,代码来源:google.cpp
示例12: DocStrToSylIdV
void TStrParser::DocStrToSylIdV(const TStr& _DocStr, TIntV& SyllablesIdV) {
TStr DocStr = _DocStr.GetUc(); // to upper case
Fail;
}
开发者ID:Austindeadhead,项目名称:qminer,代码行数:4,代码来源:strkernel.cpp
示例13: Rename
void TFile::Rename(const TStr& SrcFNm, const TStr& DstFNm){
EAssertR(
rename(SrcFNm.CStr(), DstFNm.CStr())==0,
"Error renaming file '"+SrcFNm+"' to "+DstFNm+"'.");
}
开发者ID:FlyClover,项目名称:movieinf,代码行数:5,代码来源:fl.cpp
示例14: PutStr
void TFRnd::PutStr(const TStr& Str){
PutBf(Str.CStr(), Str.Len()+1);
}
开发者ID:FlyClover,项目名称:movieinf,代码行数:3,代码来源:fl.cpp
示例15: GenDir
bool TDir::GenDir(const TStr& FPathFNm){
return CreateDirectory(FPathFNm.CStr(), NULL)!=0;
}
开发者ID:SherlockYang,项目名称:Archive,代码行数:3,代码来源:xfl.cpp
示例16: AddTimer
/////////////////////////////////////////////////
// Time-Profiler - poor-man's profiler
int TTmProfiler::AddTimer(const TStr& TimerNm) {
MxNmLen = TInt::GetMx(MxNmLen, TimerNm.Len());
return TimerH.AddKey(TimerNm);
}
开发者ID:jethrotan,项目名称:qminer,代码行数:6,代码来源:tm.cpp
示例17: DelDir
bool TDir::DelDir(const TStr& FPathFNm){
return RemoveDirectory(FPathFNm.CStr())!=0;
}
开发者ID:SherlockYang,项目名称:Archive,代码行数:3,代码来源:xfl.cpp
示例18: InitKronecker
int InitKronecker(const TStr args, PNGraph &GD, TKronMtx& FitMtx){
Env = TEnv(args, TNotify::StdNotify);
Env.PrepArgs(TStr::Fmt("Kronecker graphs. build: %s, %s. Time: %s", __TIME__, __DATE__, TExeTm::GetCurTm()));
TExeTm ExeTm;
Try
Env = TEnv(args, TNotify::StdNotify);
//const TStr InFNm = Env.GetIfArgPrefixStr("-i:", "../as20graph.txt", "Input graph file (single directed edge per line)");
TStr OutFNm = Env.GetIfArgPrefixStr("-o:", "initMatrix.txt", "Output file prefix");
const TInt NZero = Env.GetIfArgPrefixInt("-n0:", 2, "Innitiator matrix size");
const TStr InitMtx = Env.GetIfArgPrefixStr("-m:", "0.9 0.7; 0.5 0.2", "Init Gradient Descent Matrix (R=random)").GetLc();
const TStr Perm = Env.GetIfArgPrefixStr("-p:", "d", "Initial node permutation: d:Degree, r:Random, o:Order").GetLc();
const TInt GradIter = Env.GetIfArgPrefixInt("-gi:", 10, "Gradient descent iterations");
const TFlt LrnRate = Env.GetIfArgPrefixFlt("-l:", 1e-5, "Learning rate");
const TFlt MnStep = Env.GetIfArgPrefixFlt("-mns:", 0.005, "Minimum gradient step");
const TFlt MxStep = Env.GetIfArgPrefixFlt("-mxs:", 0.05, "Maximum gradient step");
const TInt WarmUp = Env.GetIfArgPrefixInt("-w:", 10000, "Samples to warm up");
const TInt NSamples = Env.GetIfArgPrefixInt("-s:", 100000, "Samples per gradient estimation");
//const TInt GradType = Env.GetIfArgPrefixInt("-gt:", 1, "1:Grad1, 2:Grad2");
const bool ScaleInitMtx = Env.GetIfArgPrefixBool("-sim:", true, "Scale the initiator to match the number of edges");
const TFlt PermSwapNodeProb = Env.GetIfArgPrefixFlt("-nsp:", 1.0, "Probability of using NodeSwap (vs. EdgeSwap) MCMC proposal distribution");
//if (OutFNm.Empty()) { OutFNm = TStr::Fmt("%s-fit%d", InFNm.GetFMid().CStr(), NZero()); }
printf("%s\n", OutFNm.CStr());
// load graph
cout << "n0 = " << NZero << endl;
// fit
FILE *F = fopen(OutFNm.CStr(), "w");
TKronMtx InitKronMtx = InitMtx=="r" ? TKronMtx::GetRndMtx(NZero, 0.1) : TKronMtx::GetMtx(InitMtx);
InitKronMtx.Dump("INIT PARAM", true);
TKroneckerLL KronLL(GD, InitKronMtx, PermSwapNodeProb);
fprintf(F, "INIT PARAM\t%s, MTX SUM %f\n", InitKronMtx.GetMtxStr().CStr(), InitKronMtx.GetMtxSum());
if (ScaleInitMtx) {
InitKronMtx.SetForEdges(GD->GetNodes(), GD->GetEdges()); }
KronLL.InitLL(GD, InitKronMtx);
InitKronMtx.Dump("SCALED PARAM", true);
fprintf(F, "SCALED PARAM\t%s, MTX SUM %f\n", InitKronMtx.GetMtxStr().CStr(), InitKronMtx.GetMtxSum());
KronLL.SetPerm(Perm.GetCh(0));
double LogLike = 0;
//if (GradType == 1) {
LogLike = KronLL.GradDescent(GradIter, LrnRate, MnStep, MxStep, WarmUp, NSamples);
//} else if (GradType == 2) {
// LogLike = KronLL.GradDescent2(GradIter, LrnRate, MnStep, MxStep, WarmUp, NSamples); }
//else{ Fail; }
//const TKronMtx& FitMtx = KronLL.GetProbMtx();
FitMtx = KronLL.GetProbMtx();
// fprintf(F, "Input\t%s\n", InFNm.CStr());
TStrV ParamV; Env.GetCmLn().SplitOnAllCh(' ', ParamV);
fprintf(F, "Command line options\n");
for (int i = 0; i < ParamV.Len(); i++) {
fprintf(F, "\t%s\n", ParamV[i].CStr()+(ParamV[i][0]=='-'?1:0)); }
fprintf(F, "Loglikelihood\t%10.2f\n", LogLike);
fprintf(F, "Absolute error (based on expected number of edges)\t%f\n", KronLL.GetAbsErr());
fprintf(F, "RunTime\t%g\n", ExeTm.GetSecs());
fprintf(F, "Estimated initiator\t%s, mtx sum %f\n", FitMtx.GetMtxStr().CStr(), FitMtx.GetMtxSum());
/*if (ScaleInitMtx) {
FitMtx.SetForEdgesNoCut(GD->GetNodes(), GD->GetEdges()); }
fprintf(F, "Scaled initiator\t%s, mtx sum %f\n", FitMtx.GetMtxStr().CStr(), FitMtx.GetMtxSum());
FitMtx.Normalize();
fprintf(F, "Normalized initiator\t%s, mtx sum %f\n", FitMtx.GetMtxStr().CStr(), FitMtx.GetMtxSum());*/
fclose(F);
Catch
printf("\nrun time: %s (%s)\n", ExeTm.GetTmStr(), TSecTm::GetCurTm().GetTmStr().CStr());
return 0;
}
开发者ID:KronGen,项目名称:KronTest,代码行数:65,代码来源:KronGen.cpp
示例19: EAssertR
bool TNEANetMP::IsOk(const bool& ThrowExcept) const {
bool RetVal = true;
for (int N = NodeH.FFirstKeyId(); NodeH.FNextKeyId(N); ) {
const TNode& Node = NodeH[N];
if (! Node.OutEIdV.IsSorted()) {
const TStr Msg = TStr::Fmt("Out-edge list of node %d is not sorted.", Node.GetId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
if (! Node.InEIdV.IsSorted()) {
const TStr Msg = TStr::Fmt("In-edge list of node %d is not sorted.", Node.GetId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
// check out-edge ids
int prevEId = -1;
for (int e = 0; e < Node.GetOutDeg(); e++) {
if (! IsEdge(Node.GetOutEId(e))) {
const TStr Msg = TStr::Fmt("Out-edge id %d of node %d does not exist.", Node.GetOutEId(e), Node.GetId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
if (e > 0 && prevEId == Node.GetOutEId(e)) {
const TStr Msg = TStr::Fmt("Node %d has duplidate out-edge id %d.", Node.GetId(), Node.GetOutEId(e));
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
prevEId = Node.GetOutEId(e);
}
// check in-edge ids
prevEId = -1;
for (int e = 0; e < Node.GetInDeg(); e++) {
if (! IsEdge(Node.GetInEId(e))) {
const TStr Msg = TStr::Fmt("Out-edge id %d of node %d does not exist.", Node.GetInEId(e), Node.GetId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
if (e > 0 && prevEId == Node.GetInEId(e)) {
const TStr Msg = TStr::Fmt("Node %d has duplidate out-edge id %d.", Node.GetId(), Node.GetInEId(e));
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
prevEId = Node.GetInEId(e);
}
}
for (int E = EdgeH.FFirstKeyId(); EdgeH.FNextKeyId(E); ) {
const TEdge& Edge = EdgeH[E];
if (! IsNode(Edge.GetSrcNId())) {
const TStr Msg = TStr::Fmt("Edge %d source node %d does not exist.", Edge.GetId(), Edge.GetSrcNId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
if (! IsNode(Edge.GetDstNId())) {
const TStr Msg = TStr::Fmt("Edge %d destination node %d does not exist.", Edge.GetId(), Edge.GetDstNId());
if (ThrowExcept) {
EAssertR(false, Msg);
}
else {
ErrNotify(Msg.CStr());
}
RetVal=false;
}
}
return RetVal;
}
开发者ID:roks,项目名称:snap-dev1,代码行数:100,代码来源:networkmp.cpp
示例20: time
void TGnuPlot::CreatePlotFile(const TStr& Comment) {
time_t ltime; time(<ime);
char* TimeStr = ctime(<ime); TimeStr[strlen(TimeStr) - 1] = 0;
// rearrange columns so that longest are on the left
//SeriesV.Sort(false);
TIntV SerIdV(SeriesV.Len(), 0);
for (int i = 0; i < SeriesV.Len(); i++) { SerIdV.Add(i); }
SerIdV.SortCmp(TGpSeriesCmp(SeriesV));
// set columns
int ColCnt = 1;
bool SaveData = false;
for (int s = 0; s < SeriesV.Len(); s++) {
TGpSeries& Plt = SeriesV[SerIdV[s]];
if (Plt.XYValV.Empty()) { continue; }
Plt.DataFNm = DataFNm;
// plots use same X column
const int PrevCol = s > 0 ? IsSameXCol(SerIdV[s], SerIdV[s-1]) : -1;
if (PrevCol != -1) { Plt.XCol = PrevCol; }
else { Plt.XCol = ColCnt; ColCnt++; }
Plt.YCol = ColCnt; ColCnt++;
if (! Plt.ZValV.Empty()) { Plt.ZCol = ColCnt; ColCnt++; }
if (! Plt.XYValV.Empty()) { SaveData=true; }
}
// save data file (skip duplicate X columns)
if (SaveData) {
FILE *F = fopen(DataFNm.CStr(), "wt");
EAssertR(F != NULL, TStr("Can not open data file ")+DataFNm);
fprintf(F, "#\n");
fprintf(F, "# %s (%s)\n", Comment.CStr(), TimeStr);
fprintf(F, "#\n");
// column names
for (int i = 0; i < SerIdV.Len(); i++) {
const TGpSeries& Ser = SeriesV[SerIdV[i]];
if (Ser.XYValV.Empty()) { continue; }
if (i == 0) { fprintf(F, "# "); } else { fprintf(F, "\t"); }
if (Ser.SaveXVals()) {
if (! LblX.Empty()) { fprintf(F, "%s\t", LblX.CStr()); }
else { fprintf(F, "XVals\t"); }
}
if (Ser.Label.Empty()) { fprintf(F, "%s", LblY.CStr()); }
else { fprintf(F, "%s", SeriesV[SerIdV[i]].Label.CStr()); }
if (Ser.ZCol > 0) fprintf(F, "\tDeltaY");
}
fprintf(F, "\n");
// data
for (int row = 0; row < SeriesV[SerIdV[0]].XYValV.Len(); row++) {
for (int i = 0; i < SeriesV.Len(); i++) {
const TGpSeries& Ser = SeriesV[SerIdV[i]];
if (row < Ser.XYValV.Len()) {
if (i > 0) { fprintf(F, "\t"); }
if (Ser.SaveXVals()) { fprintf(F, "%g\t%g", Ser.XYValV[row].Key(), Ser.XYValV[row].Dat()); }
else { fprintf(F, "%g", Ser.XYValV[row].Dat()); }
if (! Ser.ZValV.Empty()) { fprintf(F, "\t%g", Ser.ZValV[row]()); }
}
}
fprintf(F, "\n");
}
fclose(F);
}
// save plot file
FILE *F = fopen(PlotFNm.CStr(), "wt");
EAssertR(F != 0, TStr("Can not open plot file ")+PlotFNm);
TStr CurDir = TDir::GetCurDir();
CurDir.ChangeStrAll("\\", "\\\\");
fprintf(F, "#\n");
fprintf(F, "# %s (%s)\n", Comment.CStr(), TimeStr);
fprintf(F, "#\n\n");
if (! Title.Empty()) fprintf(F, "set title \"%s\"\n", Title.CStr());
fprintf(F, "set key bottom right\n");
fprintf(F, "%s\n", GetScaleStr(ScaleTy).CStr());
if (ScaleTy==gpsLog || ScaleTy==gpsLog10X || ScaleTy==gpsLog10XY) {
fprintf(F, "set format x \"10^{%%L}\"\n");
fprintf(F, "set mxtics 10\n"); }
if (ScaleTy==gpsLog || ScaleTy==gpsLog10Y || ScaleTy==gpsLog10XY) {
fprintf(F, "set format y \"10^{%%L}\"\n");
fprintf(F, "set mytics 10\n"); }
if (ScaleTy==gpsLog2X || ScaleTy==gpsLog2XY) { fprintf(F, "set format x \"2^{%%L}\"\n"); }
if (ScaleTy==gpsLog2Y || ScaleTy==gpsLog2XY) { fprintf(F, "set format y \"2^{%%L}\"\n"); }
if (SetGrid) fprintf(F, "set grid\n");
if (XRange.Val1 != XRange.Val2) fprintf(F, "set xrange [%g:%g]\n", XRange.Val1(), XRange.Val2());
if (YRange.Val1 != YRange.Val2) fprintf(F, "set yrange [%g:%g]\n", YRange.Val1(), YRange.Val2());
if (! LblX.Empty()) fprintf(F, "set xlabel \"%s\"\n", LblX.CStr());
if (! LblY.Empty()) fprintf(F, "set ylabel \"%s\"\n", LblY.CStr());
if (Tics42 < -1) {
Tics42 = GetTics42();
}
if (Tics42) {
fprintf(F, "set tics scale 2\n"); // New in version 4.2
} else {
fprintf(F, "set ticscale 2 1\n"); // Old (deprecated)
}
// custom commands
for (int i = 0; i < MoreCmds.Len(); i++) {
fprintf(F, "%s\n", MoreCmds[i].CStr()); }
// plot
if (! SeriesV.Empty()) {
fprintf(F, "plot \t");
for (int i = 0; i < SeriesV.Len(); i++) {
fprintf(F, "%s", GetSeriesPlotStr(i).CStr()); }
fprintf(F, "\n");
//.........这里部分代码省略.........
开发者ID:mkrnc,项目名称:snap,代码行数:101,代码来源:gnuplot.cpp
注:本文中的TStr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论