strings c with examples
C ++での文字列の基本を集中的に見てください。
このC ++シリーズでは、これまで、C ++での数値配列について主に説明してきました。このチュートリアルでは、単に「文字列」と呼ばれる文字配列を使用した操作について説明します。
文字配列は、ほとんどがC ++でサポートされているCスタイルの文字列です。 Cスタイルの文字配列に加えて、C ++は文字列クラス「std :: string」もサポートします。さらに、このチュートリアルでは、文字列のタイプとそれらの違い、およびC ++での各タイプのプログラミングについて説明します。
=> このシリーズのC ++チュートリアルの完全なリストに注意してください。
学習内容:
文字配列(Cスタイルの文字列)
cスタイルの文字列は、ヌル文字「 0」で終了する文字配列です。したがって、char型の配列とその配列の次元またはサイズを定義してから、それを文字列または文字の配列に初期化できます。
文字列をヌル文字で終了するのはコンパイラであることに注意してください。したがって、文字配列を文字列(二重引用符「」で)で初期化する場合は、配列のサイズを宣言するときにヌル文字用に余分なスペースを残す必要があります。 。
文字配列の宣言と初期化の例をいくつか見てみましょう。
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
上記の定義はすべて、C ++で有効なCスタイルの文字列定義です。初期化した文字列に応じて、コンパイラがサイズに対応できるように、実際のサイズを宣言するか、サイズを空白のままにすることができることに注意してください。
取り上げましょう 例 C ++での文字配列の読み取りと書き込み
以下に示すのは、cinを使用して文字列を読み取り、coutを使用して出力する単純なプログラムです。
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< 出力1:
SoftwareTestingHelp.com
入力したもの:SoftwareTestingHelp.com
出力2:
これはCスタイルの文字列です
あなたが入力した:これ
両方の出力を比較すると、最初の文字列「SoftwareTestingHelp.com」を入力すると、そのまま出力されたことがわかります。
しかし、2番目の出力では、文字列を「これはCスタイルの文字列です」と入力しましたが、出力は「これ」のみでした。
出力の違いは、文字列の読み取りに使用されるcinの「>>」演算子がCの「scanf」関数として扱われるためです。この関数は、スペースが検出されるまでのみ読み取ります。したがって、「cin with >>」は、スペースのない文字配列を読み取るのに適しています。
したがって、2番目の出力スペースが検出されている間、cin関数はそれを文字列の終わりと見なし、最初の単語のみを読み取りました。
スペースを含む文字の行全体を読み取るために、C ++は「get」関数を使用します。
get関数を使用したプログラムの例を以下に示します。
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< 出力:
これはsoftwareTestinghelp.comです
あなたが入りました: これはsoftwareTestinghelp.comです
例に示すように 、cinのget関数は2つの引数を使用します。最初の引数は文字列が読み取られる文字配列変数であり、2番目の引数は配列の最大サイズです。
Cスタイルの文字列は、ユーザーが文字列を操作できるようにする多数の文字列関数もサポートしています。これらの関数は、ヘッダー「cstring」で定義されています。
以下の表に、Cスタイルの文字列を操作するために使用できるさまざまな文字列関数を示します。
番号 関数 引数 説明 1 strcpy s1、s2 文字列s2を文字列s1にコピーします 二 strcat s1、s2 文字列s2を文字列s1の末尾に追加または連結します 3 strlen s1 文字列s1の長さを返します 4 strcmp s1、s2 0を返します:s1とs2は同じです
<0:s1 > 0:s1> s2 5 strchr s1、ch 文字列s1およびそれ以降の文字列で最初に出現する文字chへのポインタを返します 6 strstr s1、s2 文字列s1で最初に出現する文字列s2を返します
次のプログラムは、C ++でのこれらの関数のいくつかの使用法を示しています。
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< 出力:
firstStrの長さ:31
結果の文字列(secStr):softwareTesting
firstStrとsecStrの比較:-31
連結されたsecStr:ソフトウェアテスト
firststrでのiの最初の出現:sはsoftwareTestingHelp.comです
C ++の文字列クラス
クラス「std :: string」によって定義されるC ++の文字列は、オブジェクトへの文字のストリームの表現です。つまり、Stringクラスは文字列オブジェクトのコレクションです。この文字列クラスはstd名前空間の一部であり、ヘッダー「string.h」で定義されています。
文字列クラスと文字配列の基本的な違いについて説明しましょう。
- 上で説明した文字配列はコンパイル時に静的に割り当てられますが、文字列はオブジェクトであるため、動的に割り当てることができます。
- 文字配列は本質的に静的であるため、一度定義すると縮小または拡張できません。したがって、サイズ100の文字配列があり、それを「Hello」という単語に初期化すると、残りのスペースが無駄になります。
Char mystr (100) = 'こんにちは';
ここでは、残りの95の場所が無駄になっています。
これとは対照的に、文字列オブジェクトは本質的に動的であり、値の正確なスペースを占有します。
- 文字配列はパフォーマンスが高速ですが、文字列は低速です。
- 文字配列には、それらを操作できるいくつかの機能があります。文字列クラスには、イテレータ関数を含む多数の関数があります。
これらは、文字配列と文字列オブジェクトクラスの基本的な違いの一部です。
次に、文字列クラスのいくつかの例と、文字列クラスのオブジェクトに対して実行されるいくつかの基本的な操作を示します。
文字列クラスを宣言して初期化する例。
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<上記の例では、「string」クラスを使用して文字列オブジェクトを宣言および初期化しました。これは簡単な例です。次に、ユーザーから文字列を読み取るプログラムを作成し、長さの検索や2つの文字列の比較などのいくつかの文字列関数を示します。
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< 出力:
文字列を入力してください
SoftwareTestingHelp
入力された文字列は次のとおりです。SoftwareTestingHelp
文字列strの長さは次のとおりです:19
2つの文字列は等しい
新しいstr1:SoftwareTestingHelp.com
str新しい長さ:0
上の図では、文字列を操作するために多数の文字列関数を使用しています。文字列を宣言した後、文字列クラスの「getline」関数を使用して、標準入力から文字列を読み取ります。
文字列を読み取ると、「length」関数を使用してその長さを見つけます。 2つの文字列を比較して、それらが等しいかどうかを評価する必要がある場合は、文字列クラスの「比較」関数を使用できます。関数が0を返す場合、2つの文字列は等しく、そうでない場合、関数はゼロ以外の値を返します。
.jarファイルウィンドウを開く10
さらに別の機能は、既存の文字列の最後に別の文字列を追加することです。これが「追加」機能です。この例では、値が「softwaretesting」の既存の文字列str1に「.com」を追加します。
例の最後の関数は、呼び出し元の文字列オブジェクトの内容をクリアするために使用されるclear関数です。この例では、strオブジェクトの内容をクリアして、その長さが0になるようにします。
結論
このチュートリアルでは、文字列クラスの基本とともに、Cスタイルの文字列とも呼ばれる文字配列について説明しました。文字列クラスはコンテナクラスであるため、イテレータクラスなどのユーティリティがさらに付属しています。
文字列クラスとその関数については、今後のSTLチュートリアルで詳しく説明します。
=> すべてのC ++トレーニングシリーズを見るには、ここにアクセスしてください。
推奨読書