【Primer C++】第三章:文字列、容器

3607 ワード

文書ディレクトリ
  • string
  • `getline`関数
  • `string::size_type`
  • 字面値とstringオブジェクトを加算
  • 処理`string`オブジェクトの文字
  • 容器
  • 標準ライブラリタイプ`vector`
  • 反復器
  • 標準ライブラリ関数`begin()`,`end()`
  • Cスタイルの文字列
  • string getline関数getline関数のパラメータは、入力ストリームとstringオブジェクトであり、関数は入力ストリームから改行に遭遇するまで内容を読み込む(改行も読み込まれる)が、stringオブジェクトには改行は含まれない.string::size_type stringsize関数では、string::size_typeタイプの値が返されます.
    文字値とstringオブジェクトの加算stringオブジェクトと文字列のフォント値を1つの文に混ぜて使用する場合は、各加算演算子(+)の両側の演算オブジェクトの少なくとも1つがstringであることを確認する必要があります.
    string s4 = s1 + ", ";
    string s5 = "hello" + ", "; //   ,         string
    string s6 = s1 + ", " + "world";
    string s7 = "hello" + ", " + s2;
    
    stringオブジェクトの文字の処理
    文字のプロパティを変更し、cctypeヘッダファイルで定義します.
    isalnum(c),isalpha(c),isdigit(c)...
    

    ようき
    標準ライブラリタイプvector以前のバージョンのC++標準では、vectorの要素がvector(または他のテンプレートタイプ)である場合は、次のように書く必要があります.
    vector >  vector>	//        
    

    vectorのリスト初期値と要素数の違いは、()または{}によって判断されます.
    vector v1(10)	// 10   
    vector v1{10}	//     ,  0
    
    {}初期化の形態では、提供された値がリスト初期化に使用できない場合、vectorオブジェクトをこのような値で構築することを考慮する.
    vector strVec{10};	//         10         vector
    vector strVec{10, "hi"}	//         10 “hi” vector
    vector strVec(10, "hi")	//   
    
    vector strVec("hi")		//   ,              “hi” vector,     “()” 
    								//  1      ,            ,      
    

    vectorオブジェクトを作成する場合、空のvectorを作成し、push_backメソッドで要素を追加することが多い.
    反復器.begin() , .end()
    標準ライブラリ関数begin()end()この2つの関数はヘッダファイルiteratorに含まれ、
    配列の先頭ポインタと末尾ポインタを取得し、配列をパラメータとして入力します.
    int ia[] = {1,2,3,4,5,6}
    int *beg = begin(ia);
    int *last = end(ia);
    

    Cスタイルの文字列
    Cスタイルの文字列は'0'で終わる必要があり、これに関連するライブラリ関数はヘッダファイルstring.hに含まれるが、入力された文字列は'0'で終わる必要があり、正常に動作する必要がある.
    空の文字で終わる文字配列を使用してstringオブジェクトを初期化するか、stringオブジェクトに値を割り当てることができます.stringオブジェクトの加算では、空の文字で終わる文字配列を1つの演算オブジェクトとして使用できます(ただし、両方とも使用できません).
    多くのc++プログラムは、標準ライブラリが登場する前から書かれていたので、stringやvectorタイプは使用されていないに違いありません.そのため、c++は古いコードと接続するために、stringとcスタイルの文字列を混用する機能を提供しています.
    stringをパラメータとする方法ではcスタイルの文字列を伝達することができ,逆にstringをcスタイルの文字列をパラメータとする方法に伝達することはできない.
    補足として、c++はstringをcスタイル文字列に変換する方法を提供する:c_str()、返されるのは配列を指すポインタであるため、以下のコードを考慮する.
    string s = "hello";
    const char *pch = s.c_str();
    s = "world";
    
      pch       “world”   
             c_str()