ViVi Home > 技術文書 > ポインタ入門 > 文字列関数 > strmid


 

 

C/C++ ポインタ入門 > 文字列関数 > strmid
Nobuhide Tsuda
Nov-2013

文字列の途中 n 文字複写:char *my_strmid(const char *src, int ix, int n)

char *my_strmid(const char *src, int ix, int n)
{
    const int len = strlen(src);
    if( ix >= len ) {    // ix が len 以上の場合
        char *dst = new char[1];    // ヌル文字だけのためにメモリアロケート
        *dst = '\0';     // ヌル文字を書き込む
        return dst;       // アロケートしたアドレスを返す
    }
    n = std::min(n, len - ix);     // (src 文字数 - ix)、n の小さい方を n に代入
    char *dst = new char[n + 1];   // メモリ確保
    src += ix;    // src をコピー開始位置に合わせる
    for(int i = 0; i < n; ++i ) {
        *dst++ = *src++;       // 文字コピー
    }
    *dst = '\0';         // 終端記号のヌル文字を忘れずに
    return dst - n;    // dst は n だけ進んでいるので、n を引いたアドレスを返す
}

解説:

 


前: | 次: