環境:WinXP(SP3) VC++2008 MFC
VC++6.0では以下のコードで実行ができていました。
--
CString str = aaa;
if((unsigned char)0x05 < str){
TRACE0(down);
}else{
TRACE0(up);
}
--
しかし、VC++2008では以下のエラーが出ています。
--
error C2678: 二項演算子 '<=' : 型 'unsigned char' の左オペランドを扱う演算子が
見つかりません (または変換できません)
--
CStringをunsigned charへの変換はどのように行うのでしょうか。
ほんとにunsigned char* (文字列)ではなく、unsigned char (一文字)ですか?
文字列の変換であれば、VC2008はデフォルトでCStringがwchar_t相当なので、
charにはならんのです。
> CStringをunsigned charへの変換はどのように行うのでしょうか。
・CStringではなく明示的にCStringA (char用)を使う。
・CT2Aを使う。(MFC/ATLの機能)
VC6で動くとしても文字列を0x05と比較する意味が判らん。
ええのか
あまり知識も無いのに発現します。
多分これはUNICODEでの問題かと思います。2009/05/20の僕の質問「UNICODEのSDIでテキ
ストを画面に表示」に対して皆様方がとてもご親切に回答して頂いております。
とはしても、ちなみに僕もwclrp様と同じ意見です。
VCの設定をMBCSにするてもありますが、
いずれにせよ、以下に同感です。
> VC6で動くとしても文字列を0x05と比較する意味が判らん。
皆様。
遅くなりました。
結論としてコード丸書き換えをしてunsigned charで
比較をしました。
ありがとうございました。