C ++の文字列について知っておくべきことすべて



この記事では、C ++の文字列に関する詳細で包括的な知識を提供し、さまざまな操作の例も提供します。

用語 文字の順序付けられたシーケンスを意味します。文字のシーケンスは、C ++のクラスのオブジェクトを使用して表すことができます。そのための定義を提供するクラスは、Stringクラスと呼ばれます。文字列クラスは、1バイト文字へのアクセスを許可する機能を備えたバイトシーケンスとして文字を格納します。 C ++では、囲んでいる区切り文字は二重引用符です。この「StringsinC ++」の記事では、次のトピックについて説明します。

文字列クラスと文字配列の違い

文字列クラス 文字配列
文字列クラスは、文字のストリームとして表すことができるオブジェクトを定義するクラスです。文字配列は、単に文字の配列です。
文字列の場合、メモリは動的に割り当てられるため、実行時にオンデマンドでより多くのメモリを割り当てることができます文字配列のサイズは静的に割り当てる必要があるため、必要に応じて実行時にこれ以上のメモリを割り当てることはできません。
文字列クラスは、文字列に対する多様な操作を可能にするいくつかの機能を定義します。文字配列は、文字列を操作するための多くの組み込み関数を提供していません
文字列は、文字配列よりも実装に比べて遅くなります。文字配列の実装は もっと早く。

C ++で文字列を宣言して初期化する

strings-in-c++C ++での文字列の初期化は非常に簡単です!。次のいずれかの方法を使用できます。





名前空間std文字列を使用するstd_string

または

Javaでハッシュマップを実装する方法
std :: string std_string
#include using namespace std int main(){char ch [12] = {'H'、 'e'、 'l'、 'l'、 'o'、 ''、 'b'、 'y'、 '' 、 'c'、 'h'、 ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

出力:



Hello by ch Hello by st Hello by std_st

この例では、文字配列(ch)と文字列clの両方を示しています。ass(s​​tおよびstd_st)初期化メソッド。まず、12個の要素を含み、ヌル文字で終了する文字配列ch [12]を定義することにより、文字配列メソッドを使用しました。第2部では、文字列クラスメソッドを使用しました。

C ++での文字列の操作

文字列クラスを使用する利点は、C ++にそれらを操作するための組み込み関数がいくつかあることです。これにより、プログラミングが簡単かつ効果的になります。特定の重要な文字列操作関数を取り上げ、いくつかの例を見て理解しましょう。

文字列サイズ: size()メソッドとlength()メソッドの両方を使用して、オブジェクトのサイズを返すことができます。



費用<< st.length() <

出力:

11 11

文字列の連結: +演算子を使用するだけで、2つ以上の文字列を連結できます

string new_string = st + 'および' + std_st cout<< new_string <

出力:

Hello bystおよびHelloby std_st

文字列の追加: .append(string)クラスのメンバー関数を使用して、文字列内の特定の文字位置に文字列を連結して追加できます。プログラマーがstr.append(str1、p、n)を入力すると、文字列str1の位置pからn個の文字がstrの末尾に追加されることを意味します。

javaはdoubleを整数に変換します
string str = '私は学習を楽しんでいます' string str1 = 'Python、C ++、またはC' str.append(str1、8、3)cout<< str << endl

出力:

私はC ++の学習を楽しんでいます

文字列の検索: find()メンバー関数を使用して、別の文字列内で最初に出現する文字列を見つけることができます。 find()は、位置posから開始して文字列haystack内の文字列針を検索し、針の最初の出現位置を返します。関数rfind()は、渡された文字列の最後のオカレンスを返すことを除いて、同様に機能します。

string haystack = 'Hello World!'ひも針= 'o' cout<< haystack.find(needle)<

出力:

4 4 7 4294967295

最初のcoutコマンドは、haystack文字列で最初に出現する「o」のインデックスである「4」を出力するだけです。 「World」に「o」が必要な場合は、「pos」を変更して、最初のオカレンスを過ぎたところを指すようにする必要があります。 haystack.find(needle、4)は再び4を返し、haystack.find(needle、5)は7を返します。部分文字列が見つからない場合、find()はstd :: string :: nposを返します。

Nposは、size_type型で表すことができる最大値に等しい特別な値です。ここでは4294967295です。通常、文字列インデックスを期待する関数による文字列の終わりインジケータとして、または文字列インデックスを返す関数によるエラーインジケータとして使用されます。

この単純なコードは、str2で出現するすべての「C ++」を文字列で検索し、それらの位置を出力します。

マージソートc ++の例
string str2 = 'C ++はオブジェクト指向プログラミング言語であり、クラス、継承、ポリモーフィズム、データ抽象化、カプセル化が含まれています。C++では例外処理が可能で、C.C ++では不可能な関数のオーバーロードが強力で効率的かつ高速な言語です。 ' for(string :: size_type i = 0、tfind(tfind = wikistr.find( 'C ++'、i))!= string :: npos i = tfind + 1){std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

出力:

位置0で「C ++」のオカレンスが見つかりました位置132で「C ++」のオカレンスが見つかりました位置217で「C ++」のオカレンスが見つかりました
#include using namespace std class base {public:void fun_1(){cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2()//遅延バインディング(RTP)ptr-> fun_3()//遅延バインディング(RTP)ptr-> fun_4()//早期バインディングですが、この関数呼び出しは//不正です(エラーが発生します)。基本タイプと関数の//派生クラス// p-> fun_4(5)}

出力:

基本クラス関数1派生クラス関数2基本クラス関数3基本クラス関数4

これで、C ++の文字列に関するこの記事は終わりです。その上で実行できるさまざまな操作について理解していただければ幸いです。詳細については、信頼できるオンライン学習会社であるEdurekaによるJavaトレーニングをご覧ください。エドゥレカの トレーニングと認定コースは、HibernateやSpringなどのさまざまなJavaフレームワークとともに、コアと高度なJavaの両方の概念についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。