C/C++マクロを使った文字列連結の方法
この記事では、C/C++のマクロを使って2つの文字列を連結する方法を解説します。マクロ内で2つ以上の文字列を定義し、それらを単純に続けて記述するだけで、コンパイル時に自動的に1つの連結文字列へと変換されます。これは、C言語の仕様として「隣接する文字列リテラルは連結される」という性質を利用したテクニックです。
基本となる構文は以下の通りです。
#define STR1 "str1" #define STR2 " str2" #define STR3 STR1 STR2 //str1とstr2が連結される
入力: 2つの文字列を受け取ります
出力: 連結された文字列を返します
アルゴリズム
ステップ1: 2つの文字列を受け取る ステップ2: マクロを使って文字列を連結する ステップ3: 終了
サンプルコード
#include<stdio.h>
#define STR1 "Hello"
#define STR2 "World"
#define STR3 STR1 STR2
main() {
printf("%s", STR3);
}実行結果:
HelloWorld
ポイント解説
このコードでは、STR3 を STR1 STR2 として定義しています。プリプロセッサがマクロを展開すると "Hello" "World" となり、コンパイラが隣接する文字列リテラルを自動的に連結して "HelloWorld" という1つの文字列にまとめます。
この手法は、長いメッセージやパス文字列などを複数行に分けて可読性よく定義したい場合にも便利です。なお、実行時に動的に文字列を連結したい場合は strcat() 関数などを使用する必要がある点に注意してください。
-
三角マッチ棒数を求めるC/C++プログラムの解説と実装例
三角マッチ棒数とはマッチ棒を正三角形の形に並べて作った三角形のことを「三角マッチ棒数(Triangular Matchstick Number)」と呼びます。三角マッチ棒数とは、そのマッチ棒の三角形を作るために必要なマッチ棒の本数を指します。問題の概要この問題では、マッチ棒で作るピラミッドの段数 X が与えられます。そして、X 段のマッチ棒ピラミッドを構成するために必要なマッチ棒の最小総本数を出力するプログラムを作成するのが課題です。概念をより明確にするために、具体例を見てみましょう。入力: 7 出力: 84解法の考え方この問題は、三角数(Triangular Number)の拡張として考える
-
C/C++でn番目のカタラン数を求めるプログラム
カタラン数(Catalan numbers)とは、組み合わせ論におけるさまざまな数え上げ問題に現れる自然数の数列です。特に、再帰的に定義される対象の個数を数える場面で頻繁に登場することで知られています。カタラン数の主な性質ディック語(Dyck word)との関係Cn は、長さ 2n のディック語の総数を表します。ディック語とは、n 個の X と n 個の Y から構成され、文字列のどの先頭部分を見ても Y の数が X の数を超えない文字列のことです。例えば、長さ 6 のディック語は次の通りです。XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY.正しい括弧の対応付けX を開き