我非常瞭解將CString
轉換爲C風格字符的技巧。其中之一是使用strcpy
/_tcscpy
,其他包括使用CStrBuf
。從CString轉換爲char */TCHAR *
問題:
char Destination[100];
CStringA Source; // A is for simplicity and explicit ANSI specification.
Source = "This is source string."
現在我想這樣的:
Destination = Source;
自動發生。那麼,這在邏輯上意味着在CString
類中寫入一個轉換運算符。但是,就像它是隱含的,我沒有權限來更改CString
類。
我想寫一個全局轉換操作符和全局賦值操作符。但它不工作:
operator char* (const CStringA&); // Error - At least must be class-type
operator = ... // Won't work either - cannot be global.
是的,這是絕對有可能寫的函數(最好是一個模板)。但是這涉及到的調用的功能,並且它不是流暢的賦值運算符。
我不知道,但你爲什麼不能定義一個全局'void運算符=(字符*&LHS,常量的CString&右)'?其中一個參數不是內置類型,所以重載應該是可能的。 –
@Kerrek:賦值必須作爲非靜態成員函數重載。 –
你不能在CString中使用GetBuffer(..)嗎? – Simon