人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

教えてください。変数aにlpStringを代入(あるいはコピー)する方法を教えてください。VS2005 c++ win32です。

char *a,;
LPCTSTR lpString;

wcscpy(shmem,*lpString);と実行すると以下のエラーがでます。

エラー1error C2664: 'wcscpy' : 1 番目の引数を 'char *' から 'wchar_t *' に変換できません

●質問者: mai_mai_mail
●カテゴリ:コンピュータ インターネット
✍キーワード:C++ Char Win32 エラー コピー
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● takfjt
●60ポイント

LPCTSTRは、プロジェクトのプロパティによって、

const char *型か、const wchar_t *型になります。


具体的には、

[構成プロパティ]-[全般]-[文字セット]

を「Unicode文字セットを利用する」にすると

const wchar_t *型になります。

それ以外は、const char *型です。


以上を踏まえて、質問の内容を実行する手段は2つあります。


1つは、プロパティを変える。

簡単です。

デメリットは、既存の実装でunicode用の実装をしていると

不具合がでるかもしれない、ということです。


2つめは、wchar_tからcharへ変換する。

これには、WideCharToMultiByteというAPIがありますので

それを使ってください。

http://msdn.microsoft.com/ja-jp/library/cc448089.aspx

CodePageはCP_ACP、cchWideCharは-1、lpDefaultCharとlpUsedDefaultCharはNULLにしておけば

とりあえず変換できると思います。

◎質問者からの返答

早速の回答ありがとうございます。教えていただいたとおりに行ったか自身がありませんが、以下のコードを書きましたがエラーとなりました。

char *shmem, buff[1024];

int x;

x=WideCharToMultiByte(CP_ACP,-1,lpString,sizeof(*lpString),a,1024,NULL,NULL);

if(x==0){

MessageBox(NULL, _T("失敗です"), _T("失敗"), MB_OK);

}

アドバイスいただけると助かります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ