Cの文字列とC++の文字列コピー

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

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よりも大きい場合は正数を返し、逆の場合は負数を返す。

スポンサーリンク
 
スポンサーリンク