1-15. 文字列
公開日: 16:20 1. 基本編/1-15. 文字列
C++の文字列表現には次の2つの方法があります。
- Cスタイルのchar型文字列
- C++で導入されたstringクラス型
Cスタイルのchar型文字列
Cスタイルのchar型文字列はC言語で始まり、C++でもサポートが続いています。この文字列は実際はchar型の1次元の配列であり、null文字'\0'で終わります。次の宣言と初期化は"Hello"という単語の文字列を作成します。null文字を配列の最後に保持するため、char型配列のサイズは"Hello"の文字数より1つ大きくなります。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};配列の初期化のルールに従うのであれば、上の構文を次のように書くことができます。
char greeting[] = "Hello";
C/C++での文字列表現
実際には、自身で文字列の最後にnull文字を書くことはありません。C++コンパイラは配列を初期化するときに自動的に'\0'を文字列の最後に入れます。上の例を出力してみましょう。#include <iostream> using namespace std; int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: "; cout << greeting << endl; return 0; }上のコードをコンパイルし実行すると、次の結果が得られます。 Greeting message: Hello C++はnull文字で終わる文字列を操作する関数を幅広くサポートしています。
構文 | 説明 |
---|---|
double strcpy(s1,s2); | s2をs1にコピー |
double strcat(s1,s2); | s1の後ろにs2を連結 |
double strlen(s1); | s1の長さを返す |
double strcmp(s1,s2); | s1とs2が同じであれば0、s1 |
double strchr(s1,ch); | 文字chが最初に現れる文字列s1内のポインタを返す |
double strstr(str1,str2); | 文字列s2が最初に現れる文字列s1内のポインタを返す |
以下は上記の関数の仕様の使用例です。
#include <iostream> #include <cstring> using namespace std; int main () { char str1[10] = "Hello"; char str2[10] = "World"; char str3[10]; int len ; // str1をstr3にコピー strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // str1とstr2を連結 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // 連結後のstr1の長さ len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0; }上のコードをコンパイルし実行すると、次の結果が得られます。
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10
C++での文字列クラス
標準C++ライブラリはこれまで述べてきた命令をすべてサポートする文字列クラス型を備えており、加えて、より機能的です。クラスとオブジェクトについて説明していないので次の例を理解できないかもしれません。オブジェクト指向の概念を理解するまで先に進めても構いません。
#include <iostream> #include <string> using namespace std; int main () { string str1 = "Hello"; string str2 = "World"; string str3; int len ; // copy str1をstr3にコピー str3 = str1; cout << "str3 : " << str3 << endl; // str1とstr2を連結 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // 連結後のstr3の長さ len = str3.size(); cout << "str3.size() : " << len << endl; return 0; }上のコードをコンパイルし実行すると、次の結果が得られます。
str3 : Hello
str1 + str2 : HelloWorld
str3.size() : 10
0 件のコメント :
コメントを投稿