初めて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] = '6'; stringAt.at(5) = '9'; 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('n'); cout << "stringFind.find('n') = " << stringFind.find('n') << endl; cout << "stringFind.find_first_of('e') = " << stringFind.find_first_of('e') << endl; cout << "stringFind.find_last_of('e') = " << stringFind.find_last_of('e') << endl;
デフォルトの find 関数は、最初に出現した文字の添字インデックスを返します。 find_first_of と find_last_of は、それぞれ特定の文字の最初と最後の出現のインデックスです。
上記は C++ での文字列の使用に関する内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。