char - みる会図書館


検索対象: C++基礎講座
76件見つかりました。

1. C++基礎講座

第 7 章配列、構造体、ポインタ 152 S . C ・ //s は char を保持する メンバ s. f によって s に float 値を代入した後では、他の型の値が s に代入 されるまで、 s の値はメンバ f を使って s. f のようにして参照しなければなり ません。もし、プログラマがこの原則にしたがわすに、他の型のメンバ、例 えばメンバ c などを使ってオプジェクト s を参照した場合も、 C 十十はこれを 工ラーとしては警告しません。その代わりに、 C 十十は s に記憶されているも のが何であっても、 char 型の値としてビットパターンを解釈してしまいます。 メモリに記憶されているオプジェクトのピットパターンを扱うシステムプロ グラマは、このようなプログラムを多用しがちです。最後の分析の際に、確実 に共用体オプジェクトが参照されることを保証するのが、プログラマの責任な のです。 union オプジェクトに記憶されている値の型は、他の変数、例えば列挙型に 己録しておくとよいでしよう。その場合、 union オプジェクトに記憶されてい る値を参照するために使われるメンバは、次に示すように この列挙型変数の 値に基づいて決められます。 charT} ; 1 enum componentType {intT , f10atT , doubleT , 2 3 simp1eType s ; 4 componentType c ; 5 S . 1 6 7 switch (c) { 8 case i11tT : 9 S . 1 break; 10 11 case f10atT: 12 break ; 13 14 case doubIeT : s . d ・ 15 break; 16 17 case charT : 一三ロ intT ;

2. C++基礎講座

52 第 3 章型とオプジェクト 本的な考え方について解説しておくことにします。すべての宣言子の詳細につ いては、 Stroustrup 著『 The C 十十 Programming Language 』 ( 邦訳は『プ ログラミング言語 C 十十』トッパン刊 ) を参照してください。 次に、型定義の例を示します。 typedef float Ki10grams ; typedef int Matrix [ 10 ] [ 10 ] ; typedef int Month; typedef char *Name ; これらの typedef 文では、それぞれ次に示す識別子が定義されます。 1. Kilograms を既存の型 float の同意語とする。 2. Matrix を各次元に 10 の整数要素を持った 2 次元配列の同意語とする。な お、配列とは、同し型の値が複数格納されるデータ構造 (data structure) のことです。配列については第 7 章「配列、構造体、ポインタ」で解説し ます。 3. Month を int の同意語とする。 4. Name を char へのポインタの同意語とする。ポインタとは、他のオプジェ クトのアドレス (address) や位置 (location) の値を指定するオプジェク トです。 これらの同意語は、変数と関数のプログラム実体を定義したり宣言したりす るときに、既存の型と同じように使えます。次に示すのは、前に typedef 文を 使って定義した型による、変数の定義の例です。 Ki10grams we ight ; Matrix chart ; Month m ; Name first ; これらの定義文では、それぞれ次のような内容を定義しています。 1. weight を KiIograms (float) 型の変数とする。 2. chart を Matrix ( 各次元に 10 の整数要素を持っ配列 ) 型の変数とする。 3. m を Month (int) 型の変数とする。

3. C++基礎講座

第 3 章型とオプジェクト 4. first を Name (char へのポインタ ) 型の変数とする。 53 次のように、 typedef 識別子を使わなくても、これらと同じ変数の定義がで きます。 float weight; int chart [ 10 ] [ 10 ] ; int m ; char *first ; 前に述べた正弦値を求めるプログラムを typedef 文を使って修正したもの cout くく " 正弦値は " くく sine くく endl; S1ne sin(ang1e*pi/180.0) ; cin > > angle; cout くく”角度を入力して改行 : Degrees angle ; double sine ; const float pi = 3.1416 ; typedef double Degrees ; int main ( ) #include く math . h> #include く iostream. > を、次に示します ( ファイル sint. cpp)o 14 13 12 11 10 9 8 7 6 5 3 2 1 読み易さは確実に高まります。 が、大規模なプログラムでは、 typedef 文をこのように使うと、プログラムの ような小さなプログラムでは、その効果はあまりはっきりとはわかりません 型 Degrees を定義し、その Degrees を使って angle を定義しています。この この例では、プログラムを読み易くするために、 typedef 文を使って新しい

4. C++基礎講座

280 第 11 章入力と出力 11.2 入力ストリーム 標準入力ストリーム cin は、クラス istream から派生したクラス istream_ withassign のオプジェクトです。クラス istream-withassign では、演算子 の定義を 1 つ追加しています。それは、入力ストリームの代入演算子です。ス トリーム入力の処理自体は、オーバーロードされた、、 > > " の宣言を含めて、ク ラス istream で指定されています。以降では、クラス istream の解説に焦点 をあてます。 クラス istream の仕様は、次のようになっています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class istream:virtual public ios { public : / / デリミタ文字まで、文字を配列に読み込む istream& get (signed char* , int n, char delim istream& seekg(streampos) ; istream& putback(char) ; / / 入力へ文字を戻す int peek ( ) ; / / 次の文字を読み込まずに戻す int get ( ) ; istream& get (signed char&) ; istream& get (unsigned char&) ; / / 1 つの文字を読み込む char delim istream& getline (unsigned char* , int Ⅱ , char delim istream& getline (signed char* , int Ⅱ , / / デリミタ文字まで、文字を配列に読み込む istream& read(unsigned char* , int Ⅱ ) ; istream& read(signed char* , int n) ; char delim istream& get (unsigned char* , int Ⅱ ,

5. C++基礎講座

366 第 16 章ライプラリ strchr : 文字の最初の出現の探索 #include く string. h> char *strchr (const char *s , int c) ; strchr は、もし s の参照する文字列に文字 c が含まれていれば、その最初 の出現位置のポインタを戻し、そうでなければヌルポインタ NULL を戻し ます。 strcspn : 指定した中にない文字の位置の探索 #include く string. h> size—t strcspn(const char *a, const char (b) ; strcspn は、文字列 a の中で、文字列 b の中にはない文字の最初の出現位置 を戻します。 strpbrk : 指定した文字の探索 #include く string. h> char *strpbrk(const char *a, const char (b) ; strpbrk は、文字列 a の中で、文字列 b の中にある文字が最初に見つかった 位置のポインタを戻します。そのような文字がない場合、 strpbrk はヌルポイ ンタ NULL を戻します。 strrchr : 文字の最後の出現の探索 #include く string. h> char *strrchr(const char *s, int c) ; strrchr は、 s の参照する文字列中で、 c の最後の出現位置のポインタを戻す こと以外は、 strchr と同しです。

6. C++基礎講座

42 第 3 章型とオプジェクト また、値を並べて列挙型 (enumeration type) という新しい型をプログラ マが簡単に定義できます。そのため、 C 十十の基本型には、基本型のはかに列 挙型も含まれます * 2 。 文字型と整数型、そして列挙型を合わせたものを、整数値型 (integral type) と呼びます。そして、整数値型と浮動小数点型を合わたものを、算術型 (arithmetic type) と呼びます。 基本型は、プログラム実体の型として直接指定することもあります。また、 複雑な型やそれらを混合した型を作るために使うこともあります。なお、より 複雑な型を新しく作るときには、基本型だけでなく、すでに作った混合型も使 char upper (char) ; const char delim Char C ; を宣言したり定義したりする例を示します。 文字型は識別子 char で示されます。次に、 char 型を使ってプログラム実体 3.1.1 文字型 えます。 ノレ upper. cpp) 。 次に示すのは、 char 型の使い方を示した、単純なプログラムです ( ファイ み char の値を戻す関数として宣言されています。 る定数識別子として delim を定義しています。 upper は、 char の値を取り込 これらのコードでは、文字型の変数として c を定義し、文字 " : " を値とす 1 2 3 5 6 * 2 #include く iostream . 五 > #include く ctype . h> int main ( ) Char C ; cout くく " 1 つの文字を入力して改行 : ( 訳注 ) 整数値に名前を付けたものの集合が列挙型です。 C 十十の基本型と同様に 列挙型で宣言された変数の値は数として解釈されるため、列挙型は c 十十の基本型に含 まれます。

7. C++基礎講座

第 16 章ライプラリ strcat : 文字列の連結 #include く string. h> char *strcat (char *d, const char (s) ; 365 strcat は、 s の参照する文字列のコピーを、 d の参照する文字列の最後に付 け加えます。 d が参照する文字列の終了を示すヌル文字は、 s の参照する文字 列 s の先頭の文字で上書きされ、付け加えられた文字の後に新しく終了のヌル 文字が付け加えられます。 strcat は d の値を戻します。 strncat : n 文字の連結 #include く string. h> char *strncat(char *d, char *const s, size—t n) ; strncat は、 s の参照する文字列から、最初の n 文字を、 d の参照する文字 列の最後に付け加えます。 d の参照する文字列の終了のヌル文字は、 s の参 照する文字列の先頭の文字で上書きされ、付け加えられた文字の後に、新し く終了のヌル文字が付け加えられます。もし、 n が strlen(s) より大きけれは、 strncat(d,s,n) は strcat(d,s) と等しくなります。 strncat は d の値を戻します。 strcmp : 2 つの文字列の比較 #include く string. h> int strcmp(const char *a, const char (b) ; a の参照する文字列が、 b の参照する文字列と比較して、辞書の順番として 小さいか等しいか大きいかにしたがって、 strcmp は、負の整数か 0 か正の整 数を戻します。 strncmp : 2 つの文字列の n 文字までの比較 #include く string. h> int strncmp(const char *a, const char *b, size_t n) ; strncmp は、 2 つの文字列について、最大 n 文字を比較することを除いて、 関数 strcmp と同しです。

8. C++基礎講座

第 11 章入力と出力 virtual public ios { 285 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 CIass ostream public : / / 文字と文字列の書き込み ostream& put (char) ; ostreamt write(const signed char*, int Ⅱ ) ; ostream& write (const unsigned char* , int n) ; / / 出力用の読み込みストリームのポインタ位置の設定 ostream& seekp (streampos) ; ostream& seekp(streamoff , seek—dir) ; streampos tellp ( ) ; / / 書式付きの書き出し ostreamt ostream& ostream& ostream& ostream& ostream& ostream& ostream& ostream& ostream& ostream& ostream& ostream& operator operator operator operator operator operator operator operator operator operator operator operator operator くく (signed char) ; くく (unsigned char) ; くく (short) ; くく (unsigned short) ; くく (int) ; くく (unsigned int) ; くく ( 10 Ⅱ g ) ; くく (unsigned 10 Ⅱ g ) ; くく ( float ) ; くく (double) ; くく (long double) ; くく (const signed char*) ; くく (const unsigned char*) ; //ostream への endl や flush のような操作関数関数に適 / / 用される、ストリームの状態を変更する演算子 ostream& operator くく (ostream& ( * ) (ostream&) ) ; ostream& operator くく ( i0S & ( * ) (ios&)) ;

9. C++基礎講座

第 16 章ライプラリ strspn : 指定した文字の位置の探索 #include く string. 巨> int strspn(const char *a, const char (b) ; 367 strspn は、文字列 a の中で、文字列 b の中にある文字が最初に見つかった 出現位置を戻します。 strstr : 部分文字列の探索 #include く string. h> int strstr (const char *a, const char (b) ; strstr は、 a の参照する文字列中での、文字列 b に一致する最初の部分文字 列へのポインタを戻します。もしそのような文字列がなけれは、 strstr は、ヌ ルポインタ NULL を戻します。 strtok : トークンを得る #include く string. h> char *strtok(char *a, const char (b) ; strtok は、文字列 a からトークン (token) を抜き出します。この文字列 は、文字列 b 中の文字で分割されたトークンのリストとして扱われます。 例えば、 y の参照する文字列中のセパレータを使って、 x の参照する文字列 からトークンを得るために、 strtok はます、引数 x と y で呼び出されます。 次に第 1 引数がヌルポインタ NULL 、第 2 引数が y で、繰り返し呼び出され ます。 strtok は、毎回 x の参照する文字列から、次のトークンへのポインタ を抜き出して戻します。 x の参照する文字列が最後になった場合には、 strtok はヌルポインタを戻します。 strlen : 文字列の長さ #include く string. h> int strlen(const char (s) ; strlen は、 s の参照する文字列の長さを戻します。

10. C++基礎講座

第 16 章ライプラリ ldiv :long 型整数の除算 364 #include く stdlib . 五 > ldiv—t ldiv(long int num, lont int denom) ; ldiv は、次の型の構造体を戻します。 typedef struct ldiv—t { 10 Ⅱ g quot ; 10 Ⅱ g rem; } ldiv—t ; この型は、 num を denom で除算した商と余りが記憶されます。 のために使われること以外は、関数 div と同しです。 16.27 文字列操作 こでは、一般的に使われる文字列操作関数だけを示します。 strcpy : 文字列の複写 #include く string. h> char *strcpy (char *d, const char (s) ; strcpy は、 s の参照する文字列を d が参照する配列にコピーし、 d を戻し ます。 strncpy : 文字列の n 文字複写 #include く string ・ > long int イ直 char *strncpy(char *d, const char *s , size—t Ⅱ ) ; ル文字を d に加えます。 もし、 n が strlen(s) より大きければ、コピーの合計が n 文字になるまで、ヌ strncpy は、 s の指す文字列を d が参照する配列にコピーし、 d を戻します。