Cの文字列
C++でも、Cプログラムが動くようにと、C++ではCの文字列の記述の仕方が、有効となっています。
Cの文字列は、文字の配列となっており、以下のように記述します。
#include <iostream>
char name[4];
int main() {
name[0] = 'T';
name[1] = 'o';
name[2] = 'm';
name[3] = '\0';
std::cout << name[0] << name[1] << name[2] << name[3] << "\n";
std::cout << name << "\n";
return(0);
}
「\0」(NUL)は、文字列の終端を表す特別な文字です。
実行結果。
Tom Tom
C++での文字列の変数へのコピー
C++では、配列どうしの代入は許可されず、「name = "Tom"」のような書き方はできません。
標準ライブラリ関数、std::strcpyを用いると、文字列を変数にコピーできます。
#include <iostream>
#include <cstring>
char name[50];
int main() {
std::strcpy(name, "Tom");
std::cout << name << "\n";
return(0);
}
実行結果。
Tom
このコードでは、char name[50];と文字列(文字の配列)の長さを50文字としています。
C++では、可変長の文字列を使用でき、この場合最大50文字を保持できることになります。
実際には、文字列の最後は、\0(NUL)にする必要がありますので、49文字は自由に文字を格納できるということになります。
文字列関数
std::strcpy(文字列1, 文字列2)
文字列2を文字列1にコピーする
std::strncpy(文字列1, 文字列2, 長さ)
文字列2を、指定された長さの範囲内で、文字列1にコピー
std::strcat(文字列1, 文字列2)
文字列2を文字列1の最後に連結する
std::strncat(文字列1, 文字列2, 長さ)
文字列2を、指定された長さの分、文字列1に連結する
std::strlen(文字列)
文字列の長さを取得する
std::strcmp(文字列1, 文字列2)
文字列を比較する。
文字列1と文字列2が等しいときは0を返す。
文字列1が文字列2よりも大きい場合は正数を返し、逆の場合は負数を返す。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/186