掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ATL::CW2A CA2W (ID:73637)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
納得できたのだろうか・・・とりあえず第三者読者のために追記 以下の3つはプログラムとして誤っている。 > swprintf_s( wk , _countof(wk) , L"%s%s" ,CA2W("Test1"),CA2W("Test2")); > swprintf_s( wk , _countof(wk) , L"%s" ,CA2W("Test1")); > swprintf_s( wk , _countof(wk) , L"%s" ,CA2W("Test2")); printf 系関数の %s は、対応する引数が const char* (const wchar_t*) であるときだけ有効。 であるにもかかわらずこの例では CA2W() オブジェクトを渡しているので、 フォーマット文字と引数が不一致である=誤り。 下2つはたまたま正しく動作しているように見えるが、ちょっと書き直すと誤動作する。 swprintf_s( wk , _countof(wk) , L"%s%d" ,CA2W("Test1"), 123); 以下の1つは正しく (const) wchar_t* を渡しているので期待通りの結果が得られる。 > swprintf_s( wk , _countof(wk) , L"%s%s" ,CA2W("Test1").m_psz,CA2W("Test2").m_psz); %s が const wchar_t* を要求するからといって、 可変個数引数部で行われる型昇格にそういう変換は含まれないので キャストを明記していない限り operator LPWSTR は起動されない。 あと重箱の隅っぽいが、そもそも可変個数引数部に non-POD オブジェクトを渡すことはできない。 MSDN の説明もあまりよくない (英語版もダメ) http://msdn.microsoft.com/ja-jp/library/hf4y5e3w(v=vs.80).aspx String ってオレオレ用語は何だよ? const char* の誤りだ。 http://msdn.microsoft.com/ja-jp/library/3fycdw4d(v=vs.80).aspx m_psz は「元の文字列」ぢゃない(はずだ)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.