2012-04-07 8 views
0

私はSAPI 5を使用するカスタムテキスト読み上げプログラムを作成しています。私が直面している問題の1つは、SpEnumTokensという声を列挙し、それを反復処理するとCSpDynamicStringオブジェクトが生成されるということです。CSPDynamicStringをATLで `char *`に変換するにはどうしたらいいですか?

私の質問は、どのようにCSpDynamicStringchar *に変換するのですか?printfです。

私はATLのテキスト変換マクロを使用したようです。しかし、これが唯一のボイス名の最初の文字を印刷し

CSpDynamicString dstrDesc; 
SpGetDescription(voiceToken, &dstrDesc); 

USES_CONVERSION; 

printf("%s\n", W2T(dstrDesc)); 

:私はこれを行う例(dstrDescCSpDynamicStringある与えられた)を発見しました!

アイデア?

答えて

2

CSpDynamicStringは、WCHAR*に変換する演算子を実装し、LPWSTRポインタも内部的に管理します。したがって、W2Tは引数としてLPTSTRポインタを取得します。 Unicodeビルドを使用している場合、結果はまだWCHAR*ポインタにあり、printf("%s"...CHAR*引数が必要です。これは記述している問題が発生する可能性があります。

このようにそれを試してみてください。

CSpDynamicString dstrDesc; 
SpGetDescription(voiceToken, &dstrDesc); 
printf("%ls\n", (WCHAR*) dstrDesc); 
関連する問題