[C++入門から放棄-02]C++STLのstring

19416 ワード

C++STLはstring基本文字列シリーズコンテナを提供して文字列を処理し,stringを文字列クラスとして理解してもよい.ゆっくりマスターすると、使い勝手がいいことに気づきます.
stringは、追加、削除、置換、検索、比較など多くの方法を提供します.
[stringオブジェクトの割り当て]1.文字列オブジェクトに直接2を割り当てる.文字ポインタで文字列オブジェクトに値を割り当てる
#include  
#include   
#include  
using namespace std;  

int main()  
{  
    string s;  
    //          
    s = "Hello, C++STL.";  
    cout<char ss[5000];  
    //scanf()       cin     
    //scanf() c     
    scanf("%s", &ss);  
    //         string    
    s = ss;  
    //        
    cout<return 0;  
}  

[stringオブジェクトの末尾に文字を追加]前に書いたvectorを見たら、stringのいくつかの方法はvectorと同じです.
stringオブジェクトの末尾にcharを追加し、+オペレータでいいです.
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    s = s + 'a';  
    s = s + 'b';  
    s = s + 'c';  
    cout<return 0;   
}  

[2つのstringオブジェクトの接続]1.直接+オペレータ2を使用する.append()メソッドの使用
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    s = s + "abc";  
    s = s + "123";  
    cout<string ss;  
    ss.append("abc");  
    ss.append("123");  
    cout<return 0;  
}  

[stringオブジェクトの挿入文字操作]
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    s = "123456";  
    //       
    string::iterator it;  
    //                   
    it = s.begin();  

    //   'p'    1      ,      0       
    s.insert(it+1, 'p') ;  
    cout<return 0;  
}  

[stringオブジェクトにアクセスする要素]は下付き文字でアクセスし、下付き文字は0からカウントされ、stringオブジェクトの要素は1つの文字、すなわちcharである
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    s = "abc123456";  
    //           
    cout<0]<return 0;  
}  

[stringオブジェクト要素を削除]1.文字列stringオブジェクトを空にし、空の文字列を直接割り当てることができます.erase()メソッドを使用すると、要素または区間の要素を削除できます.
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    s = "abc123456";  

    string::iterator it = s.begin();  

    s.erase(it+3);  
    cout<4);  
    cout<return 0;  
}  

[stringオブジェクトで要素またはサブストリングを検索]find()メソッドを使用して、文字列の最初の文字要素またはサブストリングを検索します.戻り値を検索し、戻り値を検索できません4294967295
#include  
#include  
using namespace std;  

int main()  
{  
    string s = "cat dog cat";  
    //       'c',       
    cout<'c')<//       'cat',       
    cout<"cat")<//       "STL",     ,   ,       4294967295  
    cout<"STL")<return 0;   
}  

[stringの置換操作]replace()法を用い,replace()のリロード関数は複数あり,よく用いられるのは1,2個である.
#include  
#include   
using namespace std;  

int main()  
{  
    string s = "abc123456";  
    //  3     ,    3      "good" ,     0       
    s.replace(3, 3, "good");  
    cout<return 0;  
}  

[stringの逆配列操作]
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    string s = "123456789";  
    reverse(s.begin(), s.end());  
    cout<return 0;  
}  

[stringオブジェクトの比較]stringオブジェクトはcompare()メソッドを使用して他の文字列と比較できます.文字列AとBを仮定し、AがBより大きい場合は1を返し、AがBより小さい場合は-1を返し、AとBが同じ場合は0を返す
#include  
#include  
using namespace std;  

int main()   
{  
    string s = "cat dog cat";  

    //s "cat"    ,  1  
    cout<"cat dog")<//s "cat dog cat"  ,  0  
    cout<"cat dog cat")<//s "dog"    ,  -1  
    cout<"dog")<return 0;  
}  

[stringオブジェクトをvector要素として]文字列配列に類似
#include  
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    vector<string> v;  
    v.push_back("CaiCai");  
    v.push_back("At");  
    v.push_back("Ningbo");  

    cout<0]<cout<1]<cout<0][0]<cout<1][1]<cout<2].length()<return 0;  
}  

[stringオブジェクトのデジタル化処理]いくつかのstringは純粋な数字で、高精度のデータで、各ビットを分離する必要があります.私たちは高精度のデータを文字列として処理することができます.
#include  
#include  
using namespace std;  

int main()  
{  
    string s = "1234059";  
    int i, sum = 0;  
    for(i = 0; i < s.length(); i ++)  
    {  
        if(s[i] == '0')  
            sum += 0;  
        else if(s[i] == '1')  
            sum += 1;  
        else if(s[i] == '2')  
            sum += 2;  
        else if(s[i] == '3')  
            sum += 3;  
        else if(s[i] == '4')  
            sum += 4;  
        else if(s[i] == '5')   
            sum += 5;  
        else if(s[i] == '6')  
            sum += 6;  
        else if(s[i] == '7')  
            sum += 7;  
        else if(s[i] == '8')  
            sum += 8;  
        else if(s[i] == '9')  
            sum += 9;  
    }  
    cout<<sum<return 0;  
}  

[stringオブジェクトと文字配列の相互操作]stringと文字配列の相互変換と区別を説明するコード
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    string s;  
    char ss[100];  

    //             
    scanf("%s", &ss);  
    //              
    s = ss;  

    // printf       ,   c_str()    
    printf(s.c_str());   
    cout<// printf        
    printf("%s", ss);  
    cout<cout<cout<return 0;  
}  

[stringオブジェクトとsscanf関数]sscanf()は便利で、文字列を必要に応じてサブ列に分離することができます.
#include  
#include  
#include  
using namespace std;  
int main()  
{  
    string s1, s2, s3;  
    char sa[100], sb[100], sc[100];  

    //         ,        
    sscanf("abc 123 pc", "%s %s %s", sa, sb, sc);  
    s1 = sa;  
    s2 = sb;  
    s3 = sc;   

    cout<" "<<" "<" "<//         ,        
    int a, b, c;  
    sscanf("123 456 789", "%d %d %d", &a, &b, &c);  
    cout<""<"<//   を  に  し、  り  を、$
int x, y, z;  
sscanf("4,5$6", "%d,%d$%d", &x, &y, &z);  
cout<" "<" "<return 0;   
}

[stringオブジェクトと数値の相互変換]stringオブジェクトと数値の間に相互変換が必要
#include  
#include  
#include  
#include  
using namespace std;  

//c++  :      string  
string convertToString(double x)  
{  
    ostringstream O;  
    if(O << x)  
        return O.str();  
    return "conversion error";  
}   

//c++  : string       
double convertFromString(const string& s)  
{  
    istringstream i(s);  
    double x;  
    if(i >> x)  
        return x;  
    return 0.0;  
}   

int main()  
{  
    char b[10];  
    string a;  
    sprintf(b, "%d", 1975);  
    a = b;  
    cout<// をstringに  する 2の  :C++  
string cc = convertToString(1976);  
cout<//stringを  に  する  :C++  
string dd = "2015";  
int p = convertFromString(dd) + 2;  
cout<return 0;     
}