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
ja:root:tstring [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:root:tstring

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

ja/root/tstring.txt · 最終更新: 2018/02/06 07:21 by kota