VS2012 で新しい MFC アプリケーションを作成し、フォームにボタンを追加してから、そのボタンの onclick に次のコードを追加します。
CString Str1;
CString Str2;
Str1 = "Apple";
Str2 = "Pear";
Str1+= Str2;
AfxMessageBox(Str1);
int K = 0;
K = Str1.Find("Pear");
Str1.Format("%d", K);
Str1.TrimLeft();
AfxMessageBox(Str1);
Str1.Find
ソリューションを構築する前に、 andが気に入らないことがわかりますStr1.Format
。このエラーが発生します...
error C2664: 'int ATL::CStringT<BaseType,StringTraits>::Find(wchar_t,int) throw() const' :
cannot convert parameter 1 from 'const char [5]' to 'wchar_t'
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
There is no context in which this conversion is possible
そこで、Visual C++ 6.0 で MFC アプリケーションを作成し、フォームにボタンを追加し、ボタンの onclick に同じコードを追加しました。次に、VS2012 を使用してこのプロジェクトを開き、互換性を持たせるために必要な変更を加えました。これで、コードは Visual Studio 2012 で完全に正常に動作します。Visual Studio 2012 が Visual C++ 6.0 プロジェクトを開いて変更を加えると、別のファイルまたは #include ステートメントのようなものが追加されるという結論に達しました (おそらく間違っています)。私は 2 つのプロジェクトを比較しましたが、何が起こっているのか一生わかりません。このコードが Visual Studio 2012 で機能しない理由を誰かが明らかにすることができますが、Visual Studio 2012 で Visual C++ 6.0 プロジェクトを開くと機能しますか?