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;
}
Làm cách nào để CString có thể được chuyển tới chuỗi định dạng% s?Làm cách nào để CString có thể được chuyển tới chuỗi định dạng% s?
Bằng cách này, MSDN says (đó là lạ)
Để sử dụng một đối tượng CString trong một chức năng lập luận biến
Rõ ràng cast CString để một chuỗi LPCTSTR, như ở đây:
CString kindOfFruit = "bananas";
int howmany = 25;
printf("You have %d %s\n", howmany, (LPCTSTR)kindOfFruit);
"Không hoạt động" nghĩa là gì? Không biên dịch, không hiển thị kết quả mong đợi ...? – MikMik
Điều này hoàn toàn không liên quan gì đến C. – Puppy
@MikMik: Nó hiển thị chuỗi gabage như ** "?." ** – Benjamin