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