文字列バッファの複製文字列を作成するには次の手順で行います。(戻る)
- グローバル・メモリを確保する(GlobalAlloc)
- 引数 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文字セット」の両方に対応しています。
関連記事
- 文字列バッファに NULL 文字を書き込む - funcZeroString()
- 文字列バッファに指定文字を書き込む - funcFillString()
- 文字列バッファに指定サイズだけ書き込む - funcCopyString()
- 文字列バッファの複製文字列を作成 - funcDupString()
- 文字列バッファを行単位で取得 - funcLineString()
- 文字列バッファの改行コードを削除 - funcCRLFString()
- 文字列バッファの基本関数(まとめ)
※コメント投稿者のブログIDはブログ作成者のみに通知されます