ページ 11

TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 13:18
by bonbo
早速ですが質問させていただきます。
タイトルの通りなのですが、TCHAR型の文字列の要素をワイド文字として扱いのですが
どうすればよいのでしょうか。


具体的には、以下のプログラムを動かしたいのです。

コード:

double value=12.5;
TCHAR lps[256];
for(int i=0;i<256;i++)
lps[i]='\0';
sprintf(lps,_T("ハンバーグ:%lfドル"),value);

//この後、lps文字列に入れた文字を、どうにかしてワイド文字として識別したい

for(int i=0;i<256;)
switch(lps[i]){
case L'ハ':
printf("ひ\n");
break;
case L'2':
printf("き\n");
break;
case L'.':
printf("に\n");
break;
case L'ル':
printf("く\n");
return;
break;
/*
ひ
き
に
く
と出力して終了したい
*/
}
TCHARにこだわるわけではないので、別の型で可能なら、その方法を教えていただけると
ありがたいです。
よろしくお願いします。

Re: TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 13:47
by nil
TCHAR型は_UNICODEマクロが定義されているときはwchar_tとして定義され、されていないときはcharとして定義されます。
プロジェクトの設定の文字コードをマルチバイトからUnicodeに変更すればワイド文字になります。

Re: TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 14:08
by bonbo
for(int i=0;i<256;)
になっていますね
for(int i=0;i<256;i++)
です
>涼雅さん
ありがとうございます
wchar_t型はsprintfの第一引数のになれないのです。2バイトずつ扱うからでしょうか
他に方法があれば教えていただけると嬉しいです。

Re: TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 14:11
by nil
swprintf関数というものがあります。

Re: TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 14:12
by h2so5
TCHAR用のsprintfとして、_stprintf_sが存在します。
http://palepoli.skr.jp/content/cpp/tchar.php

Re: TCHAR型の文字列の要素をワイド文字として扱いたい

Posted: 2012年12月01日(土) 14:51
by bonbo
>涼雅さん
ありがとうございます
できました
h2so5さん
wchar_t用のsprintfですねそちらもできました