Der folgende Code erzeugt eine Warnung C6284, wenn mit /analyze
auf MSVC 2008 kompiliert: Objekt als Parameter '% s' übergeben, wenn Zeichenfolge in Call to Function erforderlich ist. SieWie C6284 zu verhindern, wenn CString :: Format verwendet?
CString kindOfFruit = "bananas";
int howmany = 25;
printf_s("You have %d %s\n", howmany, (LPCTSTR)kindOfFruit);
Als Alternative:
CString strTmp, str;
str = L"aaa.txt"
strTmp.Format (L"File: %s", str);
Ich bin für eine schöne Lösung für diese Suche, die nicht static_cast
Bin ich falsch oder die richtige Lösung ist 'str.GetBuffer()' zu verwenden? – sorin
Sie könnten beide für Ihre Situation verwenden, aber sie haben unterschiedliche Bedeutungen für den Leser. 'GetBuffer()' gibt einen String-Puffer zurück, der eine direkte Modifikation (nicht "const") des 'CString'-Objekts erlaubt, während' GetString() 'einen' const'-Puffer für den Nur-Lese-Zugriff zurückgibt. –