UNICODE使用時のCStringからlongへ変換するには – プログラミング – Home

UNICODE使用時のCStringか...
 
通知
すべてクリア

[解決済] UNICODE使用時のCStringからlongへ変換するには


パソマ
 パソマ
(@パソマ)
ゲスト
結合: 25年前
投稿: 2
Topic starter  

はじめまして!!
どうしても解決できず困っています。
みなさんよろしくお願い致します。

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++です。
よろしくお願い致します。


引用未解決
トピックタグ
パソマ
 パソマ
(@パソマ)
ゲスト
結合: 25年前
投稿: 2
Topic starter  

自己レスです。
ヘルプの変換マクロを見つけて
解決しました。

#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);
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました