この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:root:tstring [2014/04/10 03:56] kota |
ja:root:tstring [2018/02/06 07:21] (現在) kota [基本的な使い方] |
||
---|---|---|---|
ライン 6: | ライン 6: | ||
===== TString型の変数に文字を入れる ===== | ===== TString型の変数に文字を入れる ===== | ||
+ | * 初期化 | ||
* やり方色々 | * やり方色々 | ||
<code c_mac> | <code c_mac> | ||
- | TString str("hoge"); //ありがち | + | TString str("hoge"); |
- | TString str = "hoge"; //こちらもありがち | + | TString str = "hoge"; |
TString str; //まず宣言してから | TString str; //まず宣言してから | ||
ライン 17: | ライン 18: | ||
</code> | </code> | ||
- | * TString文字列は配列として入っている。この例だと | + | * TString文字列は配列として入っている(というか char* )。この例だと |
* s1[0] ーー> h | * s1[0] ーー> h | ||
* s1[1] ーー> o | * s1[1] ーー> o | ||
ライン 23: | ライン 24: | ||
* s1[3] ーー> e | * s1[3] ーー> e | ||
- | * 文字列を使うときは | + | * 32-bit なら11文字以下、64-bit なら15文字以下? |
+ | * str(0,2) 等で文字列の0番目から2番目(1文字目〜3文字目)を取り出せる。 | ||
+ | * TString s("hello world") の様に空白もOK | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | * 文字列を使うときは以下のようにする。 | ||
<code c_mac> | <code c_mac> | ||
cout << str << endl; | cout << str << endl; | ||
cout << str.Data() << endl; | cout << str.Data() << endl; | ||
</code> | </code> | ||
- | * 上の2つの出力は同じ(hoge)。Data関数の意味は?よくわからん | + | * 上の2つの出力は同じ(hoge)。TString::Data()は Char_t* を返している。 |
---- | ---- | ||
- | |||
===== Form ===== | ===== Form ===== | ||
+ | ==== 基本的な使い方 ==== | ||
+ | * std::string 的なもの | ||
+ | <code c_mac> | ||
+ | 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 と出力される | ||
+ | </code> | ||
+ | |||
+ | * printf() とかと同じ感じ | ||
+ | * フォーマット指定子 | ||
+ | * %d : int , short | ||
+ | * %f : float | ||
+ | * %lf : double | ||
+ | * %c : char (1文字) | ||
+ | * %s : char* , TString (文字列) | ||
+ | * %lld: Long64_t | ||
---- | ---- | ||
+ | ==== LOOPで生成 ==== | ||
- | ===== その他関数色々 ===== | + | * 同じもの(TH1Dなど)をいくつも生成したい場合 |
+ | * 同じ名前で生成するとダメ | ||
+ | <code c_mac> | ||
+ | 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でそれぞれの名前のヒストグラムを割り当てる | ||
+ | } | ||
+ | </code> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== その他使い方、関数など色々 ===== | ||
+ | |||
+ | <code c_mac> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | </code> | ||
---- | ---- | ||