Unicode型からchar型への変換 – プログラミング – Home

Unicode型からchar型への変換
 
通知
すべてクリア

[解決済] Unicode型からchar型への変換


potu
 potu
(@potu)
ゲスト
結合: 23年前
投稿: 36
Topic starter  

potuです。お世話になってます。

今回の質問は、文字の変換についてです。
Unicode → char を行いたいと思っています。

wchar_t wszBuf[30];

で定義した変数に、Unicode文字を格納します。

 例:)「12」という文字を渡すと、
    wszBuf[0] = 49
    wszBuf[1] = 50
    が入ります。

それを、char型に変換したいのです。

WideCharToMultiByteを使用して書いたプログラムを下記に載せます。

------ここから
//格納エリアの定義
char sszBuf[100];

WideCharToMultiByte(
CP_ACP,
WC_SEPCHARS,
wszBuf, //Unicodeの文字列
-1,
sszBuf,
len, //取ってきたwszBufの長さ
NULL,
NULL);

------ここまで

エラーは起きないのですが、値が「sszBuf」に格納されません。

プログラムのエラーと思うのですが・・・。

環境は、Win2000, VC6.0, コンソールアプリで作成しています。

ご教授をお願いいたします。


引用未解決
トピックタグ
シルク法度
 シルク法度
(@シルク法度)
ゲスト
結合: 23年前
投稿: 14
 

OLE2T をもちいては…?


返信引用
potu
 potu
(@potu)
ゲスト
結合: 23年前
投稿: 36
Topic starter  

putuです。自己レスです。

変更点は、
①「char sszBuf[100];」を
 「char *psBuf = (char *)malloc(len * 2 + 1);」に変更。

②WideCharToMultiByteの「WC_SEPCHARS,」の部分を「0」に、
 長さも「len」から「len * 2」に変更。

③配列のゼロクリアも加えてみたり。

WideCharToMultiByteの「WC_SEPCHARS,」の部分は「0」じゃないとダメなのでしょうか?
正常に変換できたプログラムを下記に載せておきます。

お騒がせしました。

----------ここから

char *psBuf = (char *)malloc(len * 2 + 1);

//ゼロクリア
ZeroMemory(psBuf, len * 2 + 1);

WideCharToMultiByte(
CP_ACP,
0,
wszBuf,
-1,
psBuf,
len * 2,
NULL,
NULL);

----------ここまで


返信引用
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

> WideCharToMultiByteの「WC_SEPCHARS,」の部分は「0」じゃないとダメなのでしょうか?
そのようです。
どなたかフォロープリーズ。

ところでWideCharToMultiByteの第6パラメータに取ってきたwszBufの長さを与えています
が、正しくは新しい文字列を受け取るバッファのサイズ、つまりlen * 2 + 1を与えるべき
でしょうね。
ではでは。


返信引用
potu
 potu
(@potu)
ゲスト
結合: 23年前
投稿: 36
Topic starter  

シルク法度さん、駄犬さん  レスありがとうございます。

・シルク法度さん
私が「potu 2002/08/22(木) 23:08:42」を書いているときに
レス頂いたのですね(汗)

「送信」を押してすぐにIE終了させたので、レス頂いていたのに気づいていませんでした。
すみません m(__)m

「OLE2T」についても調べてみようと思います。ありがとうございます。

・駄犬さん
>> WideCharToMultiByteの「WC_SEPCHARS,」の部分は「0」じゃないとダメなのでしょうか?
>そのようです。

>ところでWideCharToMultiByteの第6パラメータに取ってきたwszBufの長さを与えています
>が、正しくは新しい文字列を受け取るバッファのサイズ、つまりlen * 2 + 1を与えるべき
>でしょうね。

勉強になります。ありがとうございます。

レス頂いたシルク法度さん、駄犬さんに感謝です。 m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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