はじめまして!!
どうしても解決できず困っています。
みなさんよろしくお願い致します。
CStringからlongへ変換をしたいのですが、UNICODEを使用している為に
普通に変換できません。
const char *chrValue;
LPSTSTR strValue;
long lngValue;
// step1
// const char* への変換 ←★★ ここが問題だと思います。 ★★
chrValue = (const char*)strValue;
// step2
// long への変換
lngValue = (chrValue);
strValueに12345が入っているとしたら、Step1終了後にchrValueには先頭文字の1しか入っていません。
chrValueに直接12345を入れるとstep2で問題なくlongになる為にstep1が問題だと思います。
環境はWindowsNT4.0(SP6)、VC++6(SP4)、CE Tool Kit for VC++です。
よろしくお願い致します。
自己レスです。
ヘルプの変換マクロを見つけて
解決しました。
#include <AFXPRIV.H>
long CWinCENaviDlg::CString2Long(CString strValue)
{
USES_CONVERSION;
int intLength; // CString文字数
LPWSTR strWPoint; // UNICODE文字
LPSTR strAPoint; // JIS文字
// 文字数の取得
intLength = strValue.GetLength();
// 文字ポインタ取得
strWPoint = strValue.GetBuffer(intLength);
// UNICODEからJISへ変換
strAPoint = W2A(strWPoint);
// バッファ開放
strValue.ReleaseBuffer();
return atol(strAPoint);
}