プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

文字列バッファの複製文字列を作成 - funcDupString()

2010年02月14日 08時18分00秒 | 便利ライブラリ関数

文字列バッファの複製文字列を作成するには次の手順で行います。(戻る)

  1. グローバル・メモリを確保する(GlobalAlloc)
  2. 引数 lpString のデータをコピー(funcCopyString)

プロトタイプ宣言

LPTSTR funcDupString(
    LPCTSTR lpString,   // 文字列へのポインタ
    DWORD   dwSize      // THCAR型の文字数
);

サンプル

// 文字列バッファの複製文字列を作成
extern LPTSTR funcDupString( LPCTSTR lpString, DWORD dwSize )
{
    LPTSTR  lpBuff;
    DWORD   dwByte;
    
    // 文字数からバイト数に変換
    dwByte  = dwSize;
    dwByte *= sizeof(TCHAR);
    dwByte += sizeof(TCHAR);
    dwByte += sizeof(TCHAR);
    
    if ( (lpBuff = (LPTSTR)GlobalAlloc(GPTR,dwByte)) != NULL ){
        funcCopyString( lpBuff, (dwSize + 2), lpString );
        lpBuff[ dwSize ] = TEXT('\0');
    }
    return lpBuff;
}

// 使用例
int main( void )
{
    LPTSTR lpBuff;
    
    if ( (lpBuff = funcDupString(TEXT("あいうえおかきくけこ"),6)) != NULL ){
        puts( lpBuff );
        GlobalFree( lpBuff );       // 使用後は必ず解放
    }
    return 0;
}
  • lpString に複製する文字列を指定します。
  • dwSize に複製する文字列長さを指定します。
  • StrDup()関数とは違い指定された文字数だけを複製します。

実行結果(ANSI)

あいう

実行結果(Unicode)

あいうえおか

その他

  • funcDupString 関数は「マルチバイト文字セット」、「Unicode文字セット」の両方に対応しています。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 文字列バッファに指定サイズ... | トップ | 文字列バッファを行単位で取... »
最新の画像もっと見る

コメントを投稿

便利ライブラリ関数」カテゴリの最新記事