class MyString
{
public:
MyString(const std::wstring& s2)
{
s = s2;
}
operator LPCWSTR() const
{
return s.c_str();
}
private:
std::wstring s;
};
int _tmain(int argc, _TCHAR* argv[])
{
MyString s = L"MyString";
CStringW cstring = L"CString";
wprintf(L"%s\n", (LPCWSTR)cstring); // Okay. Becase it has an operator LPCWSTR()
wprintf(L"%s\n", cstring); // Okay, fine. But how?
wprintf(L"%s\n", (LPCWSTR)s); // Okay. fine.
wprintf(L"%s\n", s); // Doesn't work. Why? It prints gabage string like "?."
return 0;
}
¿Cómo se puede pasar CString para formatear la cadena% s?¿Cómo se puede pasar CString para formatear la cadena% s?
Por cierto, MSDN says (que es raro)
utilizar un objeto CString en una función de argumentos variable
explícitamente el CString a una cadena LPCTSTR, como se muestra aquí:
CString kindOfFruit = "bananas";
int howmany = 25;
printf("You have %d %s\n", howmany, (LPCTSTR)kindOfFruit);
¿Qué significa "no funciona"? No compila, no muestra el resultado esperado ...? – MikMik
Esto no tiene absolutamente nada que ver con C. – Puppy
@MikMik: muestra una cadena de caracteres como ** "?." ** – Benjamin