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

C++のstrncat()関数とは?文字列連結の基本をわかりやすく解説

strncat()関数とは

C++のstrncat()関数は、文字列を連結するために使用される関数です。コピー元の文字列(src)から指定した文字数だけを、コピー先の文字列(dest)の末尾に追加し、コピー先の文字列へのポインタを返します。この関数を使用するには、ヘッダーファイル<cstring>をインクルードする必要があります。

strncat()の構文

char * strncat ( char * dest, const char * src, size_t num );

上記の構文では、コピー元の文字列srcは、最大num文字までコピー先の文字列destの末尾に追加されます。追加処理の後には、自動的にNULL終端文字('\0')が付加されます。

各引数の意味

  • dest:連結先の文字列。連結後の文字列全体が収まる十分なサイズのバッファを用意する必要があります。
  • src:連結元の文字列。
  • num:srcから追加する最大文字数。

strncat()の使用例

strncat()の動作を確認するためのサンプルプログラムは以下の通りです。

サンプルコード

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char str1[20] = "Programming is ";
    char str2[20] = "fun";
    strncat(str1, str2, 3);
    cout << "The concatenated string is " << str1;
    return 0;
}

実行結果

The concatenated string is Programming is fun

プログラムの解説

上記のプログラムでは、まず2つの文字列str1とstr2を定義しています。次に、strncat()関数を呼び出し、str2の内容を先頭から3文字分だけstr1の末尾に追加しています。最後に、連結された文字列をcoutを使って標準出力に表示しています。

該当するコード部分は以下の通りです。

char str1[20] = "Programming is ";
char str2[20] = "fun";
strncat(str1, str2, 3);
cout << "The concatenated string is " << str1;

使用時の注意点

strncat()を使用する際は、連結後の文字列全体(NULL終端文字を含む)がdestのバッファサイズに収まるよう、十分な大きさの配列を確保しておく必要があります。バッファサイズを超える書き込みが発生すると、バッファオーバーフローという深刻な問題を引き起こす可能性があるため、注意が必要です。

  1. C++におけるstrcat()とstrncat()の使い方と違い

    C++には、文字列を連結するための関数としてstrcat()とstrncat()があらかじめ用意されています。どちらも<cstring>ヘッダで定義されている標準的な文字列操作関数ですが、動作には重要な違いがあります。本記事では、それぞれの構文・使い方・実行例をわかりやすく解説します。 strcat()とは strcat()は、コピー元(ソース)の文字列を、コピー先(デスティネーション)の文字列の末尾に追加するための関数です。戻り値としては、連結後のコピー先文字列へのポインタが返されます。strcat()の構文は以下の通りです。 char *strcat(char *dest, c

  2. C++で文字列をトークン化(分割)する2つの方法を解説

    文字列のトークン化(分割)とは、1つの文字列を区切り文字(スペースやカンマなど)を基準に、複数の部分文字列へ分割する処理のことです。C++では、標準ライブラリだけでもいくつかの方法で実現できます。本記事では、代表的な2つの方法をサンプルコード付きで紹介します。方法1:stringstreamを使って空白で分割する1つ目の方法は、stringstreamを使ってスペースで区切られた単語を順に読み取る方法です。この方法はやや制限がありますが、適切なチェックを加えれば十分に目的を果たすことができます。サンプルコード#include <vector> #include <string