記事のディレクトリ
文字列クラス
コンストラクタ:
string(); //デフォルトのコンストラクター
文字列(const string&str); //コンストラクター
文字列をコピー(const string&str、size_t pos、size_t len = npos); //サブストリングコンストラクター
文字列(const char * s); // C言語スタイルの文字列を使用して文字列を作成し
ます(const char * s、size_t n); // sが指す文字配列から最初のn文字をコピーします。
string(size_t n、char c); //文字cのn個の連続したコピーで文字列を埋めます。
template <class InputIterator>
string(InputIterator first、InputIterator last); //イテレータを使用して文字列を作成します
例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
void test()
{
string str;
string str1("abcdefgh");
string str2(str1);
string str3(str1,0,5);
string str4("zxcvbnm",5);
string str5(5,'x');
}
int main()
{
test();
return 0;
}
結果:
文字列オブジェクトの容量操作インターフェイス
関数名 | 特徴 |
---|---|
サイズ | 文字列の有効な文字長を返します |
長さ | 文字列の有効な文字長を返します |
容量 | 容量のサイズを返します |
空の | 文字列が空かどうかを確認し、はいの場合はtrueを返し、いいえの場合はfalseを返します |
晴れ | 有効な文字をクリアする |
リザーブ | 文字列容量のサイズを調整します |
サイズ変更 | 有効な文字数をnに設定し、余分なスペースを文字cで埋めます |
注意:
- size()の基本的な実装原理は、length()のそれとまったく同じです。size()を導入する理由は、他のコンテナーのインターフェースと一貫性を保つためです。通常、size()が基本的に使用されます。
- clear()は、基になるスペースのサイズを変更せずに、文字列内の有効な文字のみをクリアします。
- resize(size_t n)とresize(size_t n、char c)はどちらも、文字列内の有効な文字数をnに変更します。違いは、文字数が増えると、resize(n)が0要素スペースで埋められることです。 (size_t n、char c)は、文字cを使用して余分な要素スペースを埋めます。
注:サイズ変更によって要素数が変更された場合、要素数を増やすと、基礎となる容量のサイズが変更される可能性があります。要素数を減らしても、基礎となるスペースの合計サイズは変更されません。- reserved(size_t res_arg = 0):有効な要素の数を変更せずに文字列用にスペースを予約します。予約のパラメーター
が文字列の基になるスペースの合計サイズよりも小さい場合、サーバーは容量を変更しません。
string :: operator + =
+ =テール挿入
string&operator + =(const string&str);
string&operator + =(const char * s);
string&operator + =(char c);の操作と同等です。
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1;
string str2 = "123";
str1 += str2;//123
str1 += "abc";//123abc
str1 += 'x';//123abcx
return 0;
}
string :: append
文字列の現在の値の末尾に他の文字を追加して、文字列を展開します
string&append(const string&str);
string&append(const string&str、size_t subpos、size_t sublen);
文字列と追加(const char * s);
string&append(const char * s、size_t n);
文字列と追加(size_t n、char c);テンプレート<classInputIterator>
string&append(InputIteratorが最初、InputIteratorが最後);
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
string str2 = "123";
//string& append(const string& str);
str.append(str2);//123
str.append(str2);//123123
cout << str << endl;
//string& append(const string& str, size_t subpos, size_t sublen);
str.append(str2,0,2);//12312312
cout << str << endl;
//string& append(const char* s);
str.append("abc");//12312312abc
cout << str << endl;
//string& append(const char* s, size_t n);
str.append("zxcvbnm",4);//12312312abczxcv
cout << str << endl;
//string& append(size_t n, char c);
str.append(3,'x');//12312312abczxcvxxx
cout << str << endl;
/*template \<class InputIterator>
string& append (InputIterator first, InputIterator last);*/
str.append(str2.begin(),str2.end());//12312312abczxcvxxx123
cout << str << endl;
char s[] = "369";
str.append(s, s + sizeof(s) / sizeof(s[0]));//12312312abczxcvxxx123369
cout << str << endl;
return 0;
}
出力結果:
string :: insert
string&insert(size_t pos、const string&str);
string&insert(size_t pos、const string&str、size_t subpos、size_t sublen);
文字列と挿入(size_t pos、const char * s);
文字列と挿入(size_t pos、const char * s、size_t n);
文字列と挿入(size_t pos、size_t n、char c);
void insert(iterator p、size_t n、char c);
イテレータ挿入(イテレータp、char c);
テンプレート<classInputIterator>void insert(iterator p、InputIterator first、InputIterator last);
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "mm";
string str2 = "123";
//string& insert(size_t pos, const string& str);
str.insert(1,str2);//m123m
cout << str << endl;
//string& insert(size_t pos, const string& str, size_t subpos, size_t sublen);
str.insert(1,str2,1,2);//m23123m
cout << str << endl;
//string& insert(size_t pos, const char* s);
str.insert(0,"abc");//abcm23123m
cout << str << endl;
//string& insert(size_t pos, const char* s, size_t n);
str.insert(0,"000000",5);//00000zbcm23123m
cout << str << endl;
/*string& insert(size_t pos, size_t n, char c);
void insert(iterator p, size_t n, char c);*/
str.insert(str.begin(),3,'x');//xxx00000zbcm23123m
cout << str << endl;
//iterator insert(iterator p, char c);
/*template \<class InputIterator>
>> void insert(iterator p, InputIterator first, InputIterator last);*/
str.insert(str.end(),str2.begin(),str2.end());//xxx00000zbcm23123m123
cout << str << endl;
}
演算結果: