文字列バッファの基本関数をまとめただけです。
関数名をクリックすると各記事にジャンプ移動します。(戻る)
ヘッダ・ファイル - funcString.h
//------------------------------------------------------------------------------ // 文字列バッファの基本操作 //------------------------------------------------------------------------------ #ifndef __FUNCSTRING_INCLUDE__ #define __FUNCSTRING_INCLUDE__ //------------------------------------------------ // 関数のプロトタイプ宣言 //------------------------------------------------ extern LPTSTR funcZeroString( LPTSTR lpBuff, DWORD dwSize ); extern LPTSTR funcFillString( LPTSTR lpBuff, DWORD dwSize, TCHAR tcMoji ); extern LPTSTR funcCopyString( LPTSTR lpBuff, DWORD dwSize, LPCTSTR lpString ); extern LPTSTR funcDupString( LPCTSTR lpString, DWORD dwSize ); extern LPTSTR funcLineString( LPTSTR lpString ); extern LPTSTR funcCRLFString( LPTSTR lpString ); #endif //------------------------------------------------------------------------------ // End of funcString.h //------------------------------------------------------------------------------
ソース・ファイル - funcString.cpp
//------------------------------------------------------------------------------ // 文字列バッファの基本操作 //------------------------------------------------------------------------------ #include <Windows.h> #include "funcString.h" //------------------------------------------------ // 文字列バッファに NULL 文字を書き込む //------------------------------------------------ extern LPTSTR funcZeroString( LPTSTR lpBuff, DWORD dwSize ) { LPTSTR lpTail; for ( lpTail = lpBuff ; dwSize ; dwSize-- ){ *lpTail++ = TEXT('\0'); } return lpBuff; } //------------------------------------------------ // 文字列バッファに指定文字を書き込む //------------------------------------------------ extern LPTSTR funcFillString( LPTSTR lpBuff, DWORD dwSize, TCHAR tcMoji ) { LPTSTR lpTail = lpBuff; if ( dwSize ){ for ( dwSize-- ; dwSize ; dwSize-- ){ *lpTail++ = tcMoji; } *lpTail = TEXT('\0'); } return lpBuff; } //------------------------------------------------ // 文字列バッファに指定サイズだけ書き込む //------------------------------------------------ extern LPTSTR funcCopyString( LPTSTR lpBuff, DWORD dwSize, LPCTSTR lpString ) { LPTSTR lpTail = lpBuff; if ( dwSize ){ for ( dwSize-- ; dwSize ; dwSize-- ){ if ( *lpString == TEXT('\0') ){ break; } *lpTail++ = *lpString++; } *lpTail = TEXT('\0'); } return lpBuff; } //------------------------------------------------ // 文字列バッファの複製文字列を作成 //------------------------------------------------ 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; } //------------------------------------------------ // 文字列バッファの行単位で取得 //------------------------------------------------ extern LPTSTR funcLineString( LPTSTR lpString ) { static LPTSTR lpSeek; static LPTSTR lpGets; if ( lpString ){ lpSeek = lpString; } if ( lpSeek ){ if ( *lpSeek != TEXT('\0') ){ for ( lpGets = lpSeek ; *lpSeek != TEXT('\0') ; lpSeek++ ){ if ( lpSeek[0] == TEXT('\r') ){ if ( lpSeek[1] == TEXT('\n') ){ *lpSeek++ = TEXT('\0'); } goto CRLF; } if ( lpSeek[0] == TEXT('\n') ){ CRLF: *lpSeek++ = TEXT('\0'); break; } } return lpGets; } } return NULL; } //------------------------------------------------ // 文字列バッファの改行コードを削除 //------------------------------------------------ extern LPTSTR funcCRLFString( LPTSTR lpString ) { LPTSTR lpDest = lpString; LPTSTR lpTail = lpString; while ( (*lpTail == TEXT('\r')) || (*lpTail == TEXT('\n')) ){ lpTail++; } if ( *lpTail != TEXT('\0') ){ while ( *lpTail != TEXT('\0') ){ if ( (*lpTail == TEXT('\r')) || (*lpTail == TEXT('\n')) ){ while ( (*lpTail == TEXT('\r')) || (*lpTail == TEXT('\n')) ){ lpTail++; } *lpDest++ = TEXT('\0'); } else{ *lpDest++ = *lpTail++; } } *lpDest++ = TEXT('\0'); *lpDest++ = TEXT('\0'); } return lpString; } //------------------------------------------------------------------------------ // End of funcString.cpp //------------------------------------------------------------------------------
関連記事
- 文字列バッファに NULL 文字を書き込む - funcZeroString()
- 文字列バッファに指定文字を書き込む - funcFillString()
- 文字列バッファに指定サイズだけ書き込む - funcCopyString()
- 文字列バッファの複製文字列を作成 - funcDupString()
- 文字列バッファを行単位で取得 - funcLineString()
- 文字列バッファの改行コードを削除 - funcCRLFString()
- 文字列バッファの基本関数(まとめ)
※コメント投稿者のブログIDはブログ作成者のみに通知されます