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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bonbo

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

#1

投稿記事 by bonbo » 11年前

早速ですが質問させていただきます。
タイトルの通りなのですが、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にこだわるわけではないので、別の型で可能なら、その方法を教えていただけると
ありがたいです。
よろしくお願いします。

nil
記事: 428
登録日時: 12年前

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

#2

投稿記事 by nil » 11年前

TCHAR型は_UNICODEマクロが定義されているときはwchar_tとして定義され、されていないときはcharとして定義されます。
プロジェクトの設定の文字コードをマルチバイトからUnicodeに変更すればワイド文字になります。

bonbo

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

#3

投稿記事 by bonbo » 11年前

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

nil
記事: 428
登録日時: 12年前

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

#4

投稿記事 by nil » 11年前

swprintf関数というものがあります。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#5

投稿記事 by h2so5 » 11年前

TCHAR用のsprintfとして、_stprintf_sが存在します。
http://palepoli.skr.jp/content/cpp/tchar.php

bonbo

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

#6

投稿記事 by bonbo » 11年前

>涼雅さん
ありがとうございます
できました
h2so5さん
wchar_t用のsprintfですねそちらもできました

閉鎖

“C言語何でも質問掲示板” へ戻る