在wxWidgets裡,擁有特有的字串類別wxString,用法跟std::string, std::wstring稍稍不同(多了很多API)。
std::string/std::wstring可以透過c_str()取得的內部字串buffer (char*/wchar_t*)
wxString也可以透過c_str()取得內部字串的buffer,型別是wxChar
wxChar是wxWidgets定義的,會根據compile定義的wxUSE_UNICODE(是否為unicode的build)分別對應到unicode : wchar_t, ansi : char
由於wxString是wxWidgets包裝起來的class,若將它傳進function當不定參數之一,va_arg()將無法取得wxString正確的字串內容,所以如果要將wxString的字串傳入不定參數的function中,需以c_str()傳入wxChar*字串的pointer,才能在function中取得字串的內容。
// the parameter must be wxChar* // -> please convert wxString by c_str() before push it // _T("") would be convert to wxChar* // Ex: wxString s = _T("Falldog"); // ComposeContent(2, s.c_str(), _T("'s blogger")); wxString ComposeString(int count, ...) { wxString res; va_list vl; va_start(vl, count); for(int i=0 ; i<count ; ++i) res += va_arg(vl,wxChar*); va_end(vl); return res; }