C文字列とC++文字列の深い理解


Cでは、文字列というデータタイプではなく、文字列を使って文字列を保存します。C文字列は実際にはnull('\0')の文字で終わる文字列で、null文字は文字列の最後を表します。ただし、null文字で終わる文字配列だけがC文字列です。そうでなければ、一般的なC文字配列だけです。C文字列の定義は「=」で初期化できますが、以降は「=」でC文字列の割り当てはできません。C文字列の動作には「string」ファイルで定義された文字列処理関数が必要です。例えば、//文字列の初期化char a[11]=「huang」文字列の割当値strcpy(a,「nihao」)/文字列の長さを取得し、'\0'を含めてstreen(a)を含まない。printf("%s",a)Cにおいても文字ポインタを使用して文字列にアクセスし、文字ポインタを通して文字列配列の最初の要素アドレスを指すことによってアクセスすることができます。printf("%s",a)C++では、文字列をデータ型のstringとしてカプセル化し、直接変数を宣言し、値付けなどの文字列操作ができます。以下はC文字列とC++の中のstringの違いです。                            C文字列                                  stringオブジェクトに必要なヘッダファイル名                        なぜヘッダファイルが必要ですか?            文字列関数を使うために                  string類を使うためにはどう声明しますか?                        char name[20];                    string name;どのように初期化しますか                     char name[20]=「nihao」      string name="nihao"文字列の長さを宣言しなければなりませんか?  はい、                                         null文字を使用しますか?      はい、                                         文字列の割り当てはどのように行われますか?        strcpy(name,John)           name=「ジョン」その他の利点                       もっと速く                                      より使いやすく、好ましいスキームは、既存の文字よりも不可能な文字を割り当てることができる。                                      長い文字列ができますか?  C++常用文字列関数char s 1[]="I am a student"char s 2[20]=「teacher」char s 3[]="student"int result;char s 4[20]、**p;(1)直列長int streen(char*str)cout<str 2なら、1 Result=strcmp(s 2、s 3)に戻ります。   //0 result=strcmp(s 2,s 2)   //result=0 result=strcmp(s 3,s 2)   //result<0(5)列位置決めchar*strchr(char*str,char ch)p=strchr(s 1,'s')    //返す文字の文字列内の位置を見つけました。そうでないと-1 strcpy(p,s 2)に戻ります。      //s 1は「I am a teacher」(6)であり、他の列と同じサブストリングがあるかどうか(7)サブストリングを切り取って、新しいストリング文字列を形成する入力(1)方法である。cin>>a;注:このようにC文字列を読み込むと、最初の空白文字(スペース、タブ、改行)は無視され、入力は次のスペースまたは改行で停止されます。2)方法2:事前定義関数getlineを使用して、入力を受信するための最初のパラメータC文字列変数の2つのパラメータがあります。第二のパラメータは、最大で受信できる文字の個数を規定するために使用されます。例えば、char a[80]cin.getline(a,80)行が終わると入力が停止します。C++string類の入力(1)方法の一つは、C文字列入力の方法と同じです。2)方法2:getline関数を使用する。例えば:string agetline(cin,a)stringオブジェクトとC文字列の間の変換は、例えば、char a=「nihao」のような、stringタイプの変数にC文字列を格納することができる。string bb=a;しかし、stringオブジェクトは自動的にC文字列に変換できません。明示的なタイプ変換が必要です。string類のメンバー関数c_が必要です。str().例えば、strcpy(a,b.c._str文字列から数字への変換atoo関数は、C文字列パラメータを取得し、対応するint値を返します。パラメータが一つのint値に対応していない場合、atoiは0に戻ります。atooi関数はファイルのcstdlibライブラリにあります。数字が大きすぎると、intタイプの値に変換できません。atolを使って文字列をlongタイプの値に変換することができます。例えば、atoo(「1234」)   //は、整数1234 atooを返します。   //は0を返します