Re: [ROOT] TString, char*, and Strip

From: Valeriy Onuchin (Valeri.Onoutchine@cern.ch)
Date: Thu Oct 23 2003 - 15:42:52 MEST


 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