在C/C++裡有不定參數的功能,讓一個function可以傳入不固定數目的參數,在function裡,透過va_list, va_arg() 把參數一個個抓出來。
在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;
}