STL容器用法まとめ——string


1、stringタイプの初期化:
      string s1;//s 1は空白列
      string s2("abc");//字面値abcでs 2を初期化する
string s 3(s 2);//s 3をs 2のコピーに初期化
string s 4(n,‘c’);//s 4をn個のcを含む文字列に初期化する
2、stringタイプの一般的な操作:
(1)s.empty()/sが空白の場合trueを返し、そうでない場合false(if(s.empty==0){.......})を返す
(2)s.size()/文字列sの文字数を取得
(3)s[n]//はs中の位置がnの文字を返し、位置は0から始まり、配列に似ている
(4)s 1+s 2//s 1とs 2を新しい列に接続する
(5)s 1=s 2//s 1の内容をs 2のコピーに置き換える
(6)s 1==s 2//等しいと判定し、等しいとtrueを返し、そうでないとfalseを返す
(7)s 1!=s 2//判定が等しくなく、trueを返さないとfalseを返す
(8)スペースを含む文字列を入力する必要がある場合、getline関数を使用して、次のように使用します.
          string a;   getline(cin,a);
注意:1.文字列が「+」で接続されている場合、接続されている部分にはstring変数が存在する必要があります.すなわち、string s=「HELLO」+「WORLD」です.間違った書き方です.
3、補足一:
stringの特性説明:int capacity()const;//stringでメモリを増やさずに保存できる要素の数であるint max_size()constを返します.//stringオブジェクトに格納可能な最大文字列の長さint size()constを返します.//現在の文字列のサイズint length()constを返します.//現在の文字列の長さbool empty()constを返します.//現在の文字列が空のvoid resize(int len,char c);//文字列の現在のサイズをlenに設定し、不足している部分を文字cで埋めます.
stringの割り当て:string&operator=(const string&s);//文字列sを現在の文字列に割り当てる
stringの接続:string&operator+=(const string&s);//文字列sを現在の文字列の末尾string&append(const char*s)に接続します.//cタイプ文字列sを現在の文字列の末尾stringに接続する比較:bool operator=(const string&s 1,const string&s 2)const;//2つの文字列が等しいかどうかを比較する演算子「>」、「=」、「<=」、「!=」は、文字列の比較に再ロードされます.int compare(const string &s) const;//現在の文字列とsのサイズの比較
stringのサブストリング:string substr(int pos=0,int n=npos)const;//posから始まるn文字からなる文字列を返します
string substr(int pos);//posの開始文字からなる文字列を返します
stringの交換:void swap(string&s 2);//現在の文字列とs 2の値の交換
stringクラスの検索関数:
//検索に成功したときに場所を返し、失敗したらstring::nposの値を返し、string::size_を判断するtype pos==str.nposがint find(char c,int pos=0)constを成立するかどうか;//posから文字cの現在の文字列の位置int find(const char*s,int pos=0)constを検索します//posから文字列sの現在の列の位置int find(const char*s,int pos,int n)constを検索します//posから文字列sの前のn文字の現在の列の位置int find(const string&s,int pos=0)constを検索します.//posから文字列sの現在の列の位置を検索
文字列フロー処理:
ライブラリには、istringstream、ostringstream、stringstreamの3種類が定義されており、それぞれストリームの入出力操作に使用されます.
複数回の変換を行う場合はstringstreamのメンバー関数clear()を呼び出さなければならない.
ss. bool eof():文字ストリームが空の場合trueを返します.
ss. clear():文字ストリームをクリアする
用途1:シリアル情報を切断し、前のeofを使うと、もちろん文字列の流れに切断して終了します.
//   
    stringstream ss;
	ss.clear();    //   
	string Str;
	getline(cin, Str);
	ss << Str;
	while (!ss.eof())
	{
		string Tempstr;
		ss >> Tempstr;
		cout << Tempstr << endl;
	}
	ss.clear();   //   

用途2:任意のタイプに変換し、切断ストリームは文字列の単一の流れではなく、浮動小数点型、整数型などに変換することができます.
//    
    string Fix_Data = "1998.9 + 26 = MyHeart";
	stringstream _ss(Fix_Data);
	double Birth;
	_ss >> Birth;
	cout << "Birth: "<> Signal;
	cout << "Signal: " << Signal<> Day;
	cout << "Day: " << Day << endl;
 
	_ss >> Signal;
	cout << "Signal: " << Signal << endl;
 
	char Sad[10];
	_ss >> Sad;
	cout << "Sad: " << Sad << endl;

 
#include 
#include
#include
using namespace std;
//      12/45/48  12/45/48/      
int main(){
	int n;
	cin>>n;
	while(n--){
		vectorres;
		string str;
		cin>>str;
		string::size_type pos,start=0;
		string pattern="/";
		pos=str.find(pattern,0);
		while(pos!=str.npos){//     
			if(start!=pos){
				res.push_back(str.substr(start,pos-start));
				start=pos+1;
				pos=str.find(pattern,start);
			}
		}
		if(!str.substr(start).empty()){//   
			res.push_back(str.substr(start));
		}
		for(int i=0;i
//     STL     
string str13;
str13="GFBACED";
string::iterator itstr=str13.begin();
for( ;itstr!=str13.end();itstr++){//   
    cout<