サンプル集  >  VC  >  CString型とchar型の相互変換
CString型とchar型の相互変換
2014/07/15

CString型とchar型を相互変換してみます。

CStringからchar*への変換はCString::GetBuffer関数でLPTSTRを取得し、以降はwchar_t*からchar*へ変換するときに作った関数を使いました。 (wchar_t型とchar型の相互変換A)

char*からCStringへの変換は、CStringのコンストラクタで行ったため、特に関数は作りませんでした。

◆環境
OS Windows 7 Professional Service Pack 1 64bit
VC Microsoft Visual C++ 2005 77972-235-2482122-41280

[ファイル]-[新規作成]-[プロジェクト]を選択します。

「プロジェクトの種類」欄で[Visual C++]-[MFC]を選択し、[MFC アプリケーション]を選択します。 「プロジェクト名」は「CStringToChar」にします。

ウィザードを「次へ」で進め「ダイアログ ベース」を選択して「完了」を押します。

プロジェクト作成後、ソリューション エクスプローラ を開きます。 ソース ファイルを右クリックし[追加]-[既存の項目]を選択します。 wcharToChar.cppを選択し、「追加」を押します。

CStringToCharDlg.cpp (抜粋)
 12: 
 13: 
 14: 
 15: 
 16: 
 17: 
 18: 
 19: 
 20: 
 21: 
 22: 
 23: 
 24: 
 25: 
 26: 

167: 
168: 
169: 
170: 
171: 
172: 
173: 
174: 
175: 
176: 
177: 
178: 
179: 
180: 
181: 
182: 
183: 
184: 
185: 
186: 
187: 
188: 
189: 
190: 
191: 
192: 
193: 
194: 
195: 
196: 
197: 
198: 
199: 
200: 
201: 
202: 
203: 
204: 
205: 
206: 
207: 
#include <locale.h>    // setlocale

int wchartToChar ( const wchar_t* pSrc
                 , char*          pDest
                 , const size_t   iDestSize
                 );
int charToWchart ( const char*  pSrc
                 , wchar_t*     pDest
                 , const size_t sDestSize
                 );

int CStringToChar ( CString        pSrc
                  , char*          pDest
                  , const size_t   sDestSize
                  );

void CCStringToCharDlg::OnBnClickedOk()
{
    // TODO: ここにコントロール通知ハンドラ コードを追加します。

    // ロケール指定
    setlocale( LC_ALL, "Japanese" );

    CString str( "CStringメッセージ" );  // 17byte

    // CString -> char*
    int  iByte = str.GetLength() * sizeof( TCHAR );
    char* buf  = new char[iByte+1];
    CStringToChar( str, buf, iByte );
    OutputDebugStringA( buf );

    // char* -> CString
    CString str2( buf );
    OutputDebugString( str2 );

    free( buf );

    OnOK();
}

//==============================================================
// [概要]
//   CString から char* への変換を行う
// [引数]
//   pSrc      CString       変換するCString型の文字列。
//   pDest     char*         変換結果のchar型文字列。
//   sDestSize const size_t  pDestのサイズ
// [戻り値]
//   int  0:正常,1:異常
//==============================================================
int CStringToChar( CString        pSrc
                 , char*          pDest
                 , const size_t   sDestSize
                 )
{
    return wchartToChar( pSrc.GetBuffer(), pDest, sDestSize );
}

実行してダイアログの「OK」ボタンを押します。 出力に以下が表示されました。

CStringメッセージCStringメッセージ

よさそうですね。

▲ PageTop  ■ Home


Copyright (C) 2014 ymlib.com