
VC++2005で、CString型に16進文字列を入れたいのですが・・・
次のようなエラーが出ます。
void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : 1 番目の引数を 'const char [5]' から 'const wchar_t *' に変換できません。
プログラムは次の通りです。
CString strBuff;
CString strWork;
TCHAR tszBuff[80];
UINT unLength;
UINT un1;
unLength = 5;
strBuff = "12345";
_tcscpy(tszBuff, strBuff);
strWork = "";
for(un1 = 0; un1 < unLength; un1++)
{
strWork = strWork + strBuff.Format("%02x", tszBuff[un1]); ←ここにエラーがあると言われています。
}
結果は、strWorkに、"3132333435"となるようにしたい!
ネットで探したら、
>UNICODEを使われているのだと思われます。
>T("")マクロを使ってワイドキャラクタに変換するように指示すれば動くと思います。
とあったので、
strWork = strWork + strBuff.Format(_T("%02x"), tszBuff[un1]);
としてみたのですが、
二項演算子 '+' : 型 'void' の右オペランドを扱う演算子が見つかりません (または変換できません)。
というエラーが表示されました。
VC++6.0を半年かじり、今日、初めてVC++2005に触った程度の初心者です。
どなたか助言を頂ければ幸いです。
環境
Windows XP Pro SP3
Visual C++ 2005(MFC)
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
CString::Formatに戻り値はありません。
自分自身が変更されることになります。
http://msdn.microsoft.com/ja-jp/library/18he3sk6 …
どっちにみ + するのであれば、AppendFormatを使うほうが良いでしょう。
>strWork = strWork + strBuff.Format(_T("%02x"), tszBuff[un1]);
strWork.AppendFormat(_T("%02x"), tszBuff[un1]);
早速の回答、ありがとうございます。
おかげさまで、思い通りの結果が得られました。
ちなみに、「strBuff」は作業用で、元の値は「tszBuff」へコピーされていますので、変更されても問題ありません。
AppendFormatで正常動作を確認した後に分かった事ですが、
strBuff.Format(_T("%02x"), tszBuff[un1]);
strWork = strWork + strBuff;
とやれば、正常に動作しました。
ただ、VC++6.0とVC++2005の違いがこれほどとは思いませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB 6 を VS 2012に変換するには?
-
Mac 乗数の入力方法
-
COMP-3
-
中国語が文字コード変換で、一...
-
VB6からVB2010への変換について
-
ハフ変換の原理をわかりやすく...
-
文字コードの変換
-
緯度、経度の 10進法と 60進法...
-
アセンブラ言語の数字を数値に...
-
.sb3のファイルを.sb2に変換す...
-
シフト演算の結果の型
-
家電製品の電力周波数を変える機械
-
Macターミナルで実行中のプログ...
-
TCP/IP通信時のサーバーからの受信
-
Excel(VBA)でSetTimer関数を使...
-
AIXでのプロセス使用メモリの最...
-
C# シリアル通信でデータ受信...
-
FOM出版の公認テキスト&問題集...
-
メッセージボックスのボタン名変更
-
powershell を使いカレントディ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
逆コンパイルと逆アセンブルの...
-
エクセルVBAの自動変換機能?
-
10進数をBCDに変換する方法
-
VB6からVB2010への変換について
-
緯度、経度の 10進法と 60進法...
-
分を時間に変換するプログラム
-
C#で漢字→ローマ字を変換
-
なぜ通信には16進数文字列が使...
-
vb.netの型変換について
-
正規表現でルビを小書きに変換...
-
マンセル⇔XYZ,RGB変換式或いは...
-
C#で漢数字をアラビア数字に変...
-
VB6から.NETへアップグレード時...
-
php
-
VB 6 を VS 2012に変換するには?
-
3のつく数字と3の倍数のみを表...
-
C++からCへのソース変換について
-
エクセルのvbaで検索ボタンを作る
-
tex 郵便記号のだしかた
おすすめ情報