【C ++基礎知識】文字列クラス

文字列クラス

コンストラクタ:

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で埋めます

注意:

  1. size()の基本的な実装原理は、length()のそれとまったく同じです。size()を導入する理由は、他のコンテナーのインターフェースと一貫性を保つためです。通常、size()が基本的に使用されます。
  2. clear()は、基になるスペースのサイズを変更せずに、文字列内の有効な文字のみをクリアします
  3. resize(size_t n)とresize(size_t n、char c)はどちらも、文字列内の有効な文字数をnに変更します。違いは、文字数が増えると、resize(n)が0要素スペースで埋められることです。 (size_t n、char c)は、文字cを使用して余分な要素スペースを埋めます。
    注:サイズ変更によって要素数が変更された場合、要素数を増やすと、基礎となる容量のサイズが変更される可能性があります。要素数を減らしても、基礎となるスペースの合計サイズは変更されません。
  4. 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;


}

演算結果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43962381/article/details/115005615