[ROOT] Re: TString & Co.

From: Jacek M. Holeczek (holeczek@us.edu.pl)
Date: Tue Apr 09 2002 - 13:16:02 MEST


Hi,
Thanks for your help,

> (...)
>  	nVac250SM->Process(selector, s + " Vac250SM");

I have also tried this previously ... but it didn't work. Then I got it
working with the screwy s.Copy().Append(" Vac250SM").Data() sequence.
Now, encouraged by your mail, I return to this and I have found that the
following works (the "Data()" is unavoidable) :
	nVac250SM->Process(selector, (s + " Vac250SM").Data());

> (...)
> istringstream source(input.Data());  // there is no "const char*" ctor

The "istringstream" is unknown to my compiler ...
After some trials I got it working :
	#include "strstream"
	void z1aSelector::Begin(TTree *tree)
	{
	// ... something is done here and then ...
	Int_t MyNuAlphaIs;
	TString MyNameIs;
	istrstream options(GetOption());
	options >> MyNuAlphaIs >> MyNameIs;
	// ... again something is done here ...
	}

> (...)
> Concerning TString::Strip(), it returns a TSubString, which is only a
> range limitation of the original TString, it does not physically modify

As I expected ... I didn't know how to use "Strip" ...

> (...)
> and this brings us to the last remark, the TString enums are known to
> CINT but you need to specify the full scope: TString::kBoth, idem for
> TString::kExact, etc.

My fault ...
I tried "kExact", "ECaseCompare::kExact" and "TString::ECaseCompare::kExact",
but none of them worked ... . I didn't try "TString::kExact" ...
Now, this is funny ... :
------------------------
root [0] kExact
Error: Symbol kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [1] ECaseCompare::kExact
Error: class,struct,union or type ECaseCompare not defined ...
Error: class,struct,union or type ECaseCompare not defined ...
Error: Symbol ECaseCompare::kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [2] TString::ECaseCompare::kExact // IT DOES NOT KNOW IT !!!
Error: class,struct,union or type ECaseCompare not defined ...
Error: class,struct,union or type ECaseCompare not defined ...
Error: Symbol TString::ECaseCompare::kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [3] TString::kExact
(const enum TString::ECaseCompare)0
root [4] TString::ECaseCompare::kExact // NOW IT SUDDENLY KNOWS IT !!!
(const enum TString::ECaseCompare)0
------------------------
or even more funny ... :
------------------------
root [0] kExact
Error: Symbol kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [1] EStripType::kExact // EStripType ??? SHOULD BE ECaseCompare
Error: class,struct,union or type EStripType not defined ...
Error: class,struct,union or type EStripType not defined ...
Error: Symbol EStripType::kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [2] TString::EStripType::kExact // EStripType ??? SHOULD BE ECaseCompare
Error: class,struct,union or type EStripType not defined ...
Error: class,struct,union or type EStripType not defined ...
Error: Symbol TString::EStripType::kExact is not defined in current scope ...
*** Interpreter error recovered ***
root [3] TString::kExact
(const enum TString::ECaseCompare)0
root [4] TString::EStripType::kExact // EStripType ??? SHOULD BE ECaseCompare
(const enum TString::ECaseCompare)0
------------------------

Best regards,
Jacek.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET