C++ での文字列の使用

黄舟
黄舟オリジナル
2017-02-06 13:35:041466ブラウズ

初めてC言語を使って文字列を処理する場合、非常に面倒です。 C 言語には対応する文字列処理関数がありません。特定の文字列関数を実装したい場合は、自分で実装するしかありません。しかし、C++ になると、文字列処理は非常に簡単になります。今日は、C++ で最も頻繁に使用される文字列処理関数について学びます。サンプルコードは https://github.com/chenyufeng1991/CppString にアップロードされています。

まず、C++ の文字列ヘッダー ファイルを紹介します。

#include <string>


ここのヘッダー ファイルには .h が含まれていないことに注意してください。そうでない場合は、C 言語のヘッダー ファイルになります。

(1) 文字列を作成します


文字列を構築するにはいくつかの方法があります。最も一般的な方法は、コピー コンストラクターを使用することです。

string str("chenyufeng",3);  
cout << str << endl;

cout は、元の文字列の先頭の 3 文字をコピーします。最新の文字列。出力結果は che.

string str2("chenyufeng",2,3);  
cout << str2 << endl;


cout 元の文字列index=2の先頭から最新の3文字をコピーします。出力された結果は「eny」です。

// = :字符串赋值  
str2 = "Robert";  
cout << str2 << endl;


「=」を使用して、直接代入を使用して変数に文字列を代入することもできます。印刷結果は Robert.


(2) swap: 2 つの文字列の値を交換する

// swap:交换两个字符串的值  
  string string1 = "chen";  
   string string2 = "yufeng";  
   swap(string1, string2);  
   cout << "string1 = " << string1 << ";string2 = " << string2 << endl;


印刷結果は元の文字列の値と交換されました。


(3) +、追加: 文字列を追加します

// += ,append:在尾部添加字符串  
   string stringOrigin = "chen";  
    string stringAppend = "yufeng";  
    stringOrigin = stringOrigin + stringAppend;  
    cout << "stringOrigin = " << stringOrigin << endl;  
  
    stringOrigin.append("_OK");  
    cout << "stringOriginAppend = " << stringOrigin << endl;


文字列を追加すると、元の文字列が変更されることに注意してください。 + 記号を直接使用して文字列を追加できるので、非常に便利です。


(4) insert: 指定された位置に文字列を挿入します

// insert:在指定position插入字符串  
  string stringInsertOrigin = "chenyufeng";  
    stringInsertOrigin.insert(3, "__");  
    cout << "stringInsertOrigin = " << stringInsertOrigin << endl;


上記のコードは、indx=3 の位置に __underscore を挿入でき、出力結果は che__nyufeng.


(5) ) 消去、クリアは文字列を削除します

// erase: 删除字符 
  string stringEraseOrigin = "chenyufeng";  
   stringEraseOrigin.erase();  
   cout << "stringEraseOrigin = " << stringEraseOrigin << endl;  
  
  
   // clear :删除全部字符  
  string stringClearOrigin = "chenyufeng";  
   stringClearOrigin.clear();  
   cout << "stringClearOrigin = " << stringClearOrigin << endl;


上記の操作は実際に文字列を消去します。


(6) replace: 文字列

// replace: 替换字符串,某个pos位置开始的size个字符替换成后面的“”字符串  
   string stringReplaceOrigin = "chenyufeng";  
    stringReplaceOrigin.replace(3, 2, "66");  
    cout << "stringReplaceOrigin = " << stringReplaceOrigin << endl;


を置き換えます。 上記のコードは、文字列内の Index=3 から始まる 2 文字を「66」に置き換えます。出力される結果は che66ufeng.


( 7) ==,, =: 文字列のサイズを比較する


この演算子は、C++ で文字列を操作するために使用されます。実際には、演算子のオーバーロードが使用されます。文字列のサイズ比較は、辞書の文字順序または ASCII コード値に基づいて行われます。 2 つの文字列の異なる文字が比較されるか、特定の文字列の最後の桁が比較されるまで停止します。

// ==,<,>,<=,>=:比较字符串  
  string stringLeft = "zhen";  
   string stringRight = "yufeng";  
   if (stringLeft == stringRight)  
   {  
       cout << "equal" << endl;  
   }  
  
   if (stringLeft != stringRight)  
   {  
       cout << "not equal" << endl;  
   }  
  
   if (stringLeft < stringRight)  
   {  
       cout << "stringLeft < stringRight" << endl;  
   }  
  
   if (stringLeft > stringRight)  
   {  
       cout << "stringLeft > stringRight" << endl;  
   }


(8) サイズ、長さ: 文字列の長さを計算します


ここでの文字列の長さの計算は C 言語のものとは異なり、末尾は含まれません。計算された。

// size(), length():计算字符串长度  
   string stringCount = "chenyufeng";  
    cout << "stringSize = " << stringCount.size() << endl;  
    cout << "stringLength = " << stringCount.length() << endl;


上記の出力結果は全て10です。


(9) empty: 文字列が空かどうかを判定します

// empty():判断字符串是否为空  
  string stringIsEmpty = "";  
    string stringNotEmpty = "chen";  
    if (stringIsEmpty.empty())  
    {  
        cout << "stringIsEmpty == empty" << endl;  
    }  
    else  
    {  
        cout << "stringIsEmpty != empty" << endl;  
    }  
  
    if (stringNotEmpty.empty())  
    {  
        cout << "stringNotEmpty == empty" << endl;  
    }  
    else  
    {  
        cout << "stringNotEmpty != empty" << endl;  
    }


(10) 文字列の入出力ストリーム

// 输入输出stream  
  cout << "请输入一个字符串"<<endl;  
    string stringInput;  
    cin >> stringInput;  
    cout << "stringInput = " << stringInput << endl;


文字列は、C++ の他のデータ型と同様の入出力ストリームも使用できます。入力ストリームは Enter キーを使用して終了できます。


(11) max_size: 文字列の最大容量。

// max_size:  
  string stringMaxSize;  
    cout << "stringMaxSize = " << stringMaxSize.max_size() << endl;


印刷結果は: 18446744073709551599 です。文字列がこの数の文字を保持できることを示します。


(12) [], at: 要素へのアクセスと変更

// [],at() :元素存取  
  string stringAt = "chenyufeng";  
    cout << "stringAt[3] = " <<stringAt[3] << endl;  
    cout << "stringAt.at(3) = " << stringAt.at(3) << endl;  
  
    stringAt[3] = &#39;6&#39;;  
    stringAt.at(5) = &#39;9&#39;;  
    cout << "stringAt = " << stringAt << endl;


文字列は、アクセスに添字を使用して配列のように操作でき、元の文字列を変更できます。


(13) Compare: 文字列を比較し、0、1、-1 を返します。

// compare()  
   string stringCompare = "chenyufeng";  
    int aaa = stringCompare.compare("chen"); // > 0  
    int bbb = stringCompare.compare("chenyufeng"); // == 0  
    int ccc = stringCompare.compare("done"); // < 0  
    cout << "aaa = " << aaa << ";bbb = " << bbb << ";ccc = " << ccc << endl;


(14) substr: 部分文字列を取得します

// substr  
   string stringSubstr = "chenyufeng";  
   // 从索引为4开始的3个字符 
    cout << "stringSubstr.substr(4,3) = " << stringSubstr.substr(4,3) << endl;  
  
   // 从索引为4开始的所有字符  
  cout << "stringSubstr.substr(4) = " <<stringSubstr.substr(4) << endl;  
  
   // 整个字符  
  cout << "stringSubstr.substr() = " <<stringSubstr.substr() << endl;


(15) find: 文字を検索します

// find   
  string stringFind = "chenyufeng";  
    stringFind.find(&#39;n&#39;);  
    cout << "stringFind.find(&#39;n&#39;) = " << stringFind.find(&#39;n&#39;) << endl;  
  
    cout << "stringFind.find_first_of(&#39;e&#39;) = " << stringFind.find_first_of(&#39;e&#39;) << endl;  
      
    cout << "stringFind.find_last_of(&#39;e&#39;) = " << stringFind.find_last_of(&#39;e&#39;) << endl;

デフォルトの find 関数は、最初に出現した文字の添字インデックスを返します。 find_first_of と find_last_of は、それぞれ特定の文字の最初と最後の出現のインデックスです。

上記は C++ での文字列の使用に関する内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。