logo

C++ の文字列関数

文字列は文字の配列と呼ばれます。 C++ では、文字のストリーム/シーケンスは char 配列に格納されます。 C++ には、文字列を表すために使用される std::string クラスが含まれています。これは C++ の最も基本的なデータ型の 1 つであり、膨大な組み込み関数のセットが付属しています。この記事では、文字列計算の機能について説明します。

std::string とは何ですか?

std::string は、C++98 以降の C++ のクラスです。このクラスは、テキスト文字列の標準表現です。これには、検索、置換、連結、比較などのいくつかの典型的な文字列操作が含まれます。 ヘッダファイル。



文字列の宣言と初期化

std::string company = 'techcodeview.com!';>

C++ で一般的に使用される文字列関数

std::string クラスには、いくつかの一般的な文字列操作を提供する関数が含まれています。以下の表には、C++ で最も一般的に使用される関数のいくつかが含まれています。

はい・いいえ。

カテゴリー



関数と演算子

機能性

1.



postgresのシリアル
文字列の長さ

length() または size()

文字列の長さを返します。

2.

キャラクターへのアクセス

インデックス付け (array[index] を使用)

配列インデックスを使用して個々の文字にアクセスするには。

で()

指定されたインデックスの文字にアクセスするために使用されます。

3.

文字列の追加と連結

+ 演算子

+ 演算子は 2 つの文字列を連結するために使用されます。

追加()

append() 関数は、ある文字列を別の文字列の末尾に追加します。

4.

文字列の比較

== 演算子

== 演算子を使用して文字列を比較できます。

比較する()

Compare() 関数は、比較結果を示す整数値を返します。

5.

部分文字列

部分文字列()

substr() 関数を使用して、文字列から部分文字列を抽出します。

6.

検索中

探す()

find() 関数は、部分文字列が最初に出現する位置を返します。

7。

文字列の変更

交換する()

replace() 関数を使用して文字列の一部を変更します。

入れる()

insert() 関数は、指定された位置に部分文字列を追加します。

消去()

文字列の一部を削除するには、erase() 関数を使用します。

8.

変換

c_str()

std::string から C スタイルの文字列を取得するには、c_str() 関数を使用できます。

注記: 上記の関数は、C++ スタイルの文字列 (std::string オブジェクト) に対してのみ機能し、C スタイルの文字列 (文字の配列) に対しては機能しません。

1. 文字列の長さ – length() または size()

次のいずれかを使用して文字列の長さ (文字数) を見つけることができます。 length() または size() std::string クラスの関数。

構文

string_object. size() or string_object. length()>

パラメーター

  • この関数はパラメータを取りません。

戻り値

  • この関数は、文字列オブジェクト内の文字数を返します。

std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>

文字列の長さを返します 文章 それは13です。

2. 文字へのアクセス – at()

一般に、文字列の文字にアクセスするには、 [] 配列添字演算子 そしてインデックス作成。ただし、 std::string には、という名前の関数もあります で() これを使用して文字列の文字にアクセスできます。

構文

string_object. at( index );>

パラメーター

    インデックス: 文字列内の文字の位置を表します。

戻り値

  • この関数は、その場所に存在する文字を返します。 索引。

std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>

std::cout は、インデックス 3 に存在する文字である K をコンソールに出力します。

3. 文字列の連結 – append() または + 演算子

C++ では次の 2 つの方法を使用して文字列を連結できます。

1. + 演算子

+ 演算子は、文字列の連結を実行するために std::string クラスでオーバーロードされます。

構文

string_object1 + string_object2>

std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>

+ 演算子は 2 つの文字列を連結するために使用されます。文字列 fullName は techcodeview.com になります。

2.追加()

append() 関数は、2 つの文字列を連結する別のメンバー関数です。

構文

string_object1. append ( string2 )>

パラメーター

    string2: この関数は、追加する文字列をパラメータとして受け取ります。 C スタイル文字列または C++ スタイル文字列の両方を指定できます。

戻り値

  • 最後の文字列への参照。
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string>

append() 関数は、ある文字列を別の文字列の末尾に追加します。

4. 文字列比較 – Compare() または == 演算子

連結と同様に、次の 2 つの方法を使用して文字列比較を行うことができます。

1. == 演算子

等価演算子は std::string クラスでこの操作に対してオーバーロードされているため、2 つの文字列を比較するために使用できます。

構文

string_object1 == string_object2>

これは戻ります 真実 両方の文字列が等しい場合、それ以外の場合は戻ります 間違い。

std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }>

ここでは、== 演算子が返すように、文字列が等しくありませんと表示されます。 間違い。

2.比較()

Compare() 関数は、2 つの文字列を比較するために使用できる std::string クラスのメンバー関数です。

構文

str1. compare( str2 );>

パラメーター

    str2: 比較対象の文字列です。 C スタイルの文字列でも C++ スタイルの文字列でも構いません。

戻り値

  • 文字列が等しい場合は戻ります ゼロ。
  • str1 が str2 より大きい場合、値を返します >0
  • str2 が str1 より大きい場合、値を返します <0

string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>

str2 が str1 より大きいため、結果にはゼロ未満の値が含まれます。

Compare function() を使用して str2 の部分文字列を比較することもできます。

str1.compare(position, length, str2);>

どこ、

    Position : 最初の文字部分文字列の位置。 length: 部分文字列の長さ。 str2: 比較する文字列オブジェクト。

5. 検索 – find()

使用できます 探す() std::string クラスの関数を使用して、指定された文字または部分文字列が文字列または文字列の一部に存在するかどうかを確認します。

find() の構文

str1.find(var);>

パラメーター

    var: C スタイルの文字列、C++ スタイルの文字列、または文字列内で検索される文字を指定できます。

戻り値

  • 文字列内で最初に出現した文字または部分文字列へのポインタを返します。

std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring>

位置変数には、文字列テキスト内で最初に出現する文字列 Programming の開始位置である 4 が含まれます。

6. 部分文字列の生成 – substr()

使用できます substr() 関数 文字列の一部を新しい文字列オブジェクトとして生成します。これは std::string クラスのメンバー関数です。

C の substr() の構文

str1. substr ( start, end );>

パラメーター

    start: 生成される部分文字列の開始位置。 end: 生成される部分文字列の終わり。

戻り値の型

  • 新しく作成された文字列オブジェクトを返します。

std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>

上の例では。の サブ 文字列にはワールドが含まれます。

文字列の変更

次の関数を使用すると、現在の文字列を変更できます。

1.挿入()

insert() 関数を使用すると、文字列を追加できるだけでなく、指定した位置に文字列を追加することもできます。これは std::string クラスのメンバー関数でもあります。

構文

str1. insert (index, str2);>

パラメーター

    str2: 挿入する文字列。 Index: 新しい文字列を挿入する位置

戻り値の型

  • str1 への参照。

std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>

2.replace()

replace() 関数は、文字列の一部を指定された他の文字列に置き換えます。挿入とは異なり、新しい文字列を挿入する部分の文字が削除されます。

構文

str1. replace ( index, size, str2 );>

パラメーター

    Index: 新しい文字列の置換を開始する場所のインデックス。 size: 置換される文字列の部分の長さ。 str2: 挿入される新しい文字列。

戻り値の型

  • str1 への参照。

std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>

3. 消去()

Erase() 関数は、文字または文字列の一部を削除するために使用される std::string クラスのメンバー関数です。

構文

str1 .erase( start, end);>

パラメーター

    start: 開始位置。 end: 終了位置。

戻り値の型

  • str1 への参照。

std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>

std::string を C 文字列に変換する – c_str)_

c_str() 関数は、C++ スタイルの文字列、つまり std::string オブジェクトを C スタイルの文字列、つまり 文字の配列に変換するために使用されるメンバー関数です。

構文

str1.c_str()>

パラメーター

  • この関数はパラメータを取りません。

戻り値

  • 同等の文字配列へのポインタ。

std::string str = 'C++'; const char* cstr = str.c_str()>

C++ の文字列関数の例

以下のコードは、上記で指定した文字列関数の使用法を示しています。

C++


ABSCコード



// C++ Code to demostrate various functions available in> // String class> > #include> #include> > using> namespace> std;> > int> main()> {> >// Creating and initializing strings> >string greeting =>'Hello, World!'>;> >cout << greeting << endl;> >string name;> > >// Input from the user> >cout <<>'Enter your name: '>;> >cin>> 名前;>> >cout << name << endl;> > >// String length> >int> length = greeting.length();> >cout << length << endl;> > >// Accessing characters> >char> firstChar = greeting[0];> >char> secondChar = greeting.at(1);> >cout << firstChar <<>' '> << secondChar << endl;> > >// Appending and concatenating strings> >string firstName =>'Geek'>;> >string lastName =>'Geeks'>;> >string fullName = firstName +>' '> + lastName;> >cout << fullName << endl;> >string base =>'Hello'>;> >cout << base << endl;> >base.append(>' World!'>);> >cout << base << endl;> > >// String comparison> >string str1 =>'apple'>;> >string str2 =>'banana'>;> >if> (str1 == str2) {> >cout <<>'Strings are equal'> << endl;> >}> >else> {> >cout <<>'Strings are not equal'> << endl;> >}> > >int> result = str1.compare(str2);> >if> (result == 0) {> >cout <<>'Strings are equal'> << endl;> >}> >else> if> (result <0) {> >cout <<>'str1 comes before str2'> << endl;> >}> >else> {> >cout <<>'str1 comes after str2'> << endl;> >}> > >// Substrings> >string text =>'Hello, World!'>;> >cout << text << endl;> >string sub = text.substr(7, 5);> >cout << sub << endl;> > >// Searching> >string searchIn =>'C++ Programming'>;> >size_t> position = searchIn.find(>'Programming'>);> >if> (position != string::npos) {> >cout <<>'Found at position '> << position << endl;> >}> >else> {> >cout <<>'Not found'> << endl;> >}> > >// Modifying strings> >string modify =>'I like dogs.'>;> >modify.replace(7, 4,>'cats'>);> >cout << modify << endl;> >modify.insert(6,>' black'>);> >cout << modify << endl;> >modify.erase(6, 6);> >cout << modify << endl;> > >// Conversion> >string str =>'C++'>;> >const> char>* cstr = str.c_str();> >cout << cstr << endl;> > >return> 0;> }>

>

>

出力

Hello, World! Enter your name: Geeks Geeks 13 H e Geek Geeks Hello Hello World! Strings are not equal str1 comes before str2 Hello, World! World Found at position 4 I like cats. I like black cats. I like cats. C++>