C++Primer学習ノート(4)-標準ライブラリstringタイプ


ノート3が空いているのは、3の内容が4より先だからだが、教科書はそうは思わないようだ.
stringオブジェクトの定義と初期化
いくつかの方法:
string s1;  //s1 is empty
string s2(s1);  //s2 is a copy of s1
string s3("value");  //s3 is initialized to a copy of literal value of "value"
string s4(n,'c')  //s4 is initialized to a copy of n 'c's

stringオブジェクトの読み書き
   
stringタイプの入力オペレータ:
      1.先頭のすべての空白文字(スペース、改行、タブなど)を読み取り、無視します.
      2.再びスペースが表示されるまで文字を読み込みます
1.読み出し位置数のstringオブジェクト
   
クラス比文字入力は、操作全体が文字列であるだけです.
2.getlineでテキスト全体を読み込む
行全体が読み込まれるため、改行は含まれません.
たとえば、次のような手順があります.
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string line;
    while(getline(cin,line))
    {
        cout<<line<<endl;
    }
}

stringオブジェクトの操作
s.empty()
sが空白の場合はtrueを返し、そうでなければfalseを返します.
s.size()
s中の文字の個数を返します
s[n]
sの位置nの文字を返し、位置は0からカウントします.
s1+s2
s 1とs 2を新しい文字列に接続して新しい文字列を返します
s1=s2
s 1の内容をs 2のコピーに置き換える
v1==v2
v 1とv 2の内容を比較し、等しい場合はtrueを返します.そうでない場合false
!=,<,<=,>,>=
本来の意味を保つ.
例:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string a("aaa");
    string b("a");
    bool comparer(a>b);
    cout<<comparer<<endl;
}

上記の結果は1です.
1.stringのsizeとempty操作
次の文を使用して、空かどうかを判断します.
if(a.empty())
//ok:empty

2.string::size_typeタイプ
これはタイプで、unsignedタイプで、下付きの操作に使用できます.
3.stringオブジェクトから文字を取得する
次の表のオペレータ([])を使用します.次の例を参照してください.
#include <iostream>
#include <string>


using namespace std;


int main()
{
    string str("some string");
    
    for(string::size_type ix = 0; ix != str.size()-1; ix+=2)
    {
        str[ix]='x';
    }


    for(string::size_type ix = 0; ix != str.size(); ++ix)
    {
        cout<<str[ix]<<endl;
    }
    return 0;
}

上記の例では、次の機能を実現しました.
1.文字列strを初期化する.
2.文字列奇数ビット文字をxに変換する.
3.個々の出力
4.出力全体.