0

CString2 つの変数と 2 つのlong変数を 1 つに連結する必要がありますCString。次のように使用した Format 関数を 1 つ見つけました。

CString str = "Some Data";

str.Format("%s%d", str, 123);

しかし、それはエラーを出しています。エラーログは次のとおりです。

\AudWinSockXCtrl.cpp(410) : error C2440: 'initializing' : cannot convert from 'const char [10]' to 'ATL::CStringT'

        with

        [

            BaseType=wchar_t,

            StringTraits=StrTraitMFC

        ]

        Constructor for class 'ATL::CStringT' is declared 'explicit'

        with

        [

            BaseType=wchar_t,

            StringTraits=StrTraitMFC

        ]

.\AudWinSockXCtrl.cpp(411) : error C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' :
cannot convert parameter 1 from 'const char [5]' to 'const wchar_t *'
        with


        [

            BaseType=wchar_t,

            StringTraits=StrTraitMFC

        ]

        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or
function-style cast

.\AudWinSockXCtrl.cpp(414) : error C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' :
cannot convert parameter 1 from 'const char [4]' to 'const wchar_t *'

        with

        [

            BaseType=wchar_t,

            StringTraits=StrTraitMFC

        ]

        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or
function-style cast

toString()Java で使用するような関数はありますか?

4

2 に答える 2

1
CString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);

ここまで読ん_T<tchar.h>ください: Tchar.h の汎用テキスト マッピング

于 2013-02-28T10:21:22.750 に答える
0

sprintf (OutputBuffer, "%s%d", str, 123) ;

  1. ANSI バージョンには CStringA を使用します。
  2. Unicode バージョンには CStringW を使用します。
  3. TCHAR バージョンには CString を使用します。

CString を強制的に CStringA:: として評価するには、[Project] -> [Properties] -> [Configuration Properties] -> [General] に移動します。右側に「文字セット」行が表示されます。これを「未設定」に変更します。

于 2013-02-28T05:57:13.253 に答える