C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】2つの文字列を連結するプログラムの書き方を解説


文字列とは、ヌル文字('\0')で終端された1次元の文字配列のことです。2つの文字列の連結(コンカティネーション)とは、それらをつなぎ合わせて1つの新しい文字列を作る操作を指します。

例えば、以下のように「Mangoes are」と「tasty」という2つの文字列を連結すると、「Mangoes are tasty」という1つの文字列になります。

String 1: Mangoes are
String 2: tasty
連結後の文字列: Mangoes are tasty

ここでは、C++を使って2つの文字列を連結するプログラムを紹介します。

サンプルプログラム

#include <iostream>
using namespace std;
int main() {
   char str1[100] = "Hi...";
   char str2[100] = "How are you";
   int i,j;
   cout<<"String 1: "<<str1<<endl;
   cout<<"String 2: "<<str2<<endl;
   for(i = 0; str1[i] != '\0'; ++i);
   j=0;
   while(str2[j] != '\0') {
      str1[i] = str2[j];
      i++;
      j++;
   }
   str1[i] = '\0';
   cout<<"String after concatenation: "<<str1;
   return 0;
}

実行結果

String 1: Hi...
String 2: How are you
String after concatenation: Hi...How are you

プログラムの解説

このプログラムでは、str1str2という2つの文字列を用意しています。まず、forループを使ってstr1の終端まで移動します。ループが終了した時点で、変数iにはstr1内のヌル文字のインデックスが格納されています。該当するコードは以下の通りです。

for(i = 0; str1[i] != '\0'; ++i);

次に、whileループを使ってstr2の内容をstr1へコピーしていきます。変数jは0から始まり、str2の各文字を、iが指す位置にあるstr1へ順番にコピーします。このループは、str2[j]がヌル文字になるまで繰り返されます。

j=0;
while(str2[j] != '\0') {
   str1[i] = str2[j];
   i++;
   j++;
}

連結が完了したら、最後にstr1の末尾へヌル文字を追加します。これにより、str1は正しい形式の文字列として扱えるようになります。その後、連結結果の文字列を出力して表示します。

str1[i] = '\0';
cout<<"String after concatenation: "<<str1;

補足:strcat関数を使う方法

なお、標準ライブラリの<cstring>ヘッダーに含まれるstrcat()関数を使えば、上記のような処理を自分で書かずに簡単に文字列を連結することもできます。strcat(str1, str2)と呼び出すだけで、str2str1の末尾に追加されます。ただし、str1の配列サイズが連結後の文字列全体を収められる十分な大きさであることに注意が必要です。


  1. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁

  2. Javaで2つの文字列を比較するプログラムの書き方|サンプルコード付きで解説

    この記事では、Javaを使って2つの文字列を比較する方法を解説します。文字列とは文字が順番に並んだものであり、Javaプログラミング言語ではStringクラスのオブジェクトとして扱われます。なお、「==」演算子はオブジェクトの参照(アドレス)を比較するためのものであり、文字列の中身そのものを比較する用途には適していません。文字列の内容を比較するには、各文字を先頭から順に照合し、異なる文字が見つかった時点でその文字コードの差を返すという方法が一般的です。本記事では、このロジックを自前で実装するサンプルコードを紹介します。以下に実行例を示します。入力値:1つ目の文字列 : Java Program