Hi Mina Nozar, ROOT sources are open. You can borrow the code from http://root.cern.ch/root/html/src/TString.cxx.html#TString:Strip Regards. Valeriy > Hi all, > > I've written the following piece of macro to read in a text file with a > number of lines with the first field in each line used (later in the > larger macro) to label the .eps and .gif files produced (after producing > graphs, ...) and the second field, used as titles of the graphs. > > Since at a later stage, I do the following inside another loop, i.e. > .... > char psFile_name[40]; > sprintf(psFile_name,"%s_%s.eps",Basename,PsVarName[n]); > > .... > > I would need to get rid of the blank spaces before and after the first > field in each line. So I do this by using Strip but not without doing > some gymnastics > between TString and char* (as I've highlighted in the macro). The macro > works but I was just wondering whether there is a more graceful way of > handling this... i.e. can I not have a Strip method that takes as an > argument another TString and the character to be stripped, returning the > stripped string? > Looking in > http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/html/src/TString.cxx.html ?TString#first_hit > , I wasn't able to find one. > > > Thanks and best wishes, > Mina Nozar > ////////////////////////////////////////// > > void Label(const int Ncol, char * LabelFile_name) > { > > // root > // .L Label.C > // .x Label.C(34,"test.label"); > > #include <iostream.h> > #include <string.h> > > // Reading in the label file > ifstream LabelFile; > LabelFile.open(LabelFile_name, ios::in); > > Int_t nline = 0; > TString VarName[Ncol]; > TString PsVarName[Ncol]; > char line[100]; > TString tmp, tmp1; > const char* tmp2; > while (!LabelFile.eof() && nline<(Ncol/2)) { > LabelFile.getline(line,100, '\n'); > tmp = line; > tmp1 = tmp(0,6); > tmp2 = tmp1; > PsVarName[2*nline] = Strip(tmp2); > VarName[2*nline] = tmp(7,tmp.Length()-6); > cout << "PsVarName[" << 2*nline<< "]: " << PsVarName[2*nline] << > " VarName[" << 2*nline << "]: " << VarName[2*nline] << endl; > nline++; > } > > > test.label file looks like: > > Mass Mass(#pi^{+}#pi^{+}#pi^{-}) GeV > Total Total Intensity > 0-+_1 0^{-+}0^{+}_0_#sigma > 0-+_2 0^{-+}0^{+}_0_f_{0}(980) > 0-+_3 0^{-+}0^{+}_1_#rho(770) > 1++_1 1^{++}0^{+}_0_#rho(770) > 1++_2 1^{++}1^{+}_0_#rho(770) > 1++_3 1^{++}1^{-}_0_#rho(770) > 1++_4 1^{++}0^{+}_2_#rho(770) > 1++_5 1^{++}1^{+}_2_#rho(770) > 1++_6 1^{++}1^{-}_2_#rho(770) > 1++_7 1^{++}0^{+}_1_#sigma > 1++_8 1^{++}1^{+}_1_#sigma > 1++_9 1^{++}1^{-}_1_#sigma > 1++_10 1^{++}0^{+}_1_f_{0}(980) > 1++_11 1^{++}1^{+}_1_f_{0}(980) > 1++_12 1^{++}1^{-}_1_f_{0}(980) > > > Running the above peice results in: > > Openning file: test.label > PsVarName[0]: Mass VarName[0]: ass(#pi^{+}#pi^{+}#pi^{-}) GeV > PsVarName[2]: Total VarName[2]: Total Intensity > PsVarName[4]: 0-+_1 VarName[4]: 0^{-+}0^{+}_0_#sigma > PsVarName[6]: 0-+_2 VarName[6]: 0^{-+}0^{+}_0_f_{0}(980) > PsVarName[8]: 0-+_3 VarName[8]: 0^{-+}0^{+}_1_#rho(770) > PsVarName[10]: 1++_1 VarName[10]: 1^{++}0^{+}_0_#rho(770) > PsVarName[12]: 1++_2 VarName[12]: 1^{++}1^{+}_0_#rho(770) > PsVarName[14]: 1++_3 VarName[14]: 1^{++}1^{-}_0_#rho(770) > PsVarName[16]: 1++_4 VarName[16]: 1^{++}0^{+}_2_#rho(770) > PsVarName[18]: 1++_5 VarName[18]: 1^{++}1^{+}_2_#rho(770) > PsVarName[20]: 1++_6 VarName[20]: 1^{++}1^{-}_2_#rho(770) > PsVarName[22]: 1++_7 VarName[22]: 1^{++}0^{+}_1_#sigma > PsVarName[24]: 1++_8 VarName[24]: 1^{++}1^{+}_1_#sigma > PsVarName[26]: 1++_9 VarName[26]: 1^{++}1^{-}_1_#sigma > PsVarName[28]: 1++_10 VarName[28]: 1^{++}0^{+}_1_f_{0}(980) > PsVarName[30]: 1++_11 VarName[30]: 1^{++}1^{+}_1_f_{0}(980) > PsVarName[32]: 1++_12 VarName[32]: 1^{++}1^{-}_1_f_{0}(980) > > >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET