Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
====== TString ======
----
===== TString型の変数に文字を入れる =====
* 初期化
* やり方色々
TString str("hoge");
TString str = "hoge";
TString str; //まず宣言してから
str.Form("hoge"); //Form関数を使って値を入れる
* TString文字列は配列として入っている(というか char* )。この例だと
* s1[0] ーー> h
* s1[1] ーー> o
* s1[2] ーー> g
* s1[3] ーー> e
* 32-bit なら11文字以下、64-bit なら15文字以下?
* str(0,2) 等で文字列の0番目から2番目(1文字目〜3文字目)を取り出せる。
* TString s("hello world") の様に空白もOK
----
* 文字列を使うときは以下のようにする。
cout << str << endl;
cout << str.Data() << endl;
* 上の2つの出力は同じ(hoge)。TString::Data()は Char_t* を返している。
----
===== Form =====
==== 基本的な使い方 ====
* std::string 的なもの
cout << Form("hoge%d.root",1) << endl;// 第一引数に " " で囲んだ文字列、第二引数に %d などに入る数字などがくる
// hoge1.root と出力される
cout << Form("hoge%02d.root",1) << "," << Form("hoge%03d.root",1) << endl;
//フォーマット指定子のリーディングゼロの機能(0詰め)を使うと、
//hoge01.root , hoge001.root と出力される
* printf() とかと同じ感じ
* フォーマット指定子
* %d : int , short
* %f : float
* %lf : double
* %c : char (1文字)
* %s : char* , TString (文字列)
* %lld: Long64_t
----
==== LOOPで生成 ====
* 同じもの(TH1Dなど)をいくつも生成したい場合
* 同じ名前で生成するとダメ
const Int_t Nhist = 10; //const がないと次の行でエラーがでる
TH1D *hist[Nhist]; //先に10個のヒストグラムを確保
for (Int_t i = 0 ; i < Nhist ; i++){
hist[i] = new TH1D(Form("hist%d",i+1)); //newでそれぞれの名前のヒストグラムを割り当てる
}
----
===== その他使い方、関数など色々 =====
TString s1 = "hoge";
TString s2 = "hoge";
s1 += s2; //s1の後ろにs2を加えるー> s1 = hogehoge
s1 += "hoge" //s1の後ろに hoge を加えるー> s1 = hogehogehoge
str += "hage"; //strの最後に”huge”を足すー>str = hogehage
str[5] = 'u'; //5番目の文字をuに変えるー>str = hogehuge
// ' ' で囲まなくてはならない。" " で囲むとおかしな結果になる。<ー何故?
str.First("g"); //最初にでてきた ” ” で指定された文字の場所(配列番号)を返す。今回の場合、 2 を返す。
//文字でなく文字列を指定した場合、その先頭の文字の番号を返す
str.Insert(str.First("g"),"u");//最初にでてきた”g”の直前に”u”が挿入されるー>str = hougehuge
str.ReplaceAll("houge","hoge");//"hougehuge"を"hoge"に置き換えるー>str = hogehuge
str.ToUpper(); //すべて大文字にー>str = HOGEHUGE
str.ToLower(); //すべて小文字にー>str = hogehuge
----