Mam aplikacji MFC w C++, która używa std :: string i std :: wstring, a często rzuca od jednego do drugiego, a także wiele innych nonsens. Potrzebuję ujednolicić wszystko do jednego formatu, więc zastanawiałem się, czy powinienem pójść z CStringiem czy std :: wstringiem.Jakich struktur ciągów o szerokich znakach używam? CString vs Wstring
W aplikacji będę musiał wygenerować ciągi z tabeli ciągów, pracować z wieloma wywołaniami Windows, które wymagają stałych wskaźników tchar lub wchar_t, edytować formanty i współdziałać z interfejsem API obiektu COM, który wymaga BSTR.
Mam również wektory ciągów znaków, więc czy jest jakiś problem z wektorem CStrings?
Który z nich jest lepszy? Jakie są plusy i minusy każdego?
Przykłady
BSTR do wstring
CComBSTR tstr;
wstring album;
if((trk->get_Info((BSTR *)&tstr)) == S_OK && tstr!= NULL)
album = (wstring)tstr;
wstring do BSTR
CComBSTR tstr = path.c_str();
if(trk->set_Info(tstr) == S_OK)
return true;
zasób String wstring
CString t;
wstring url;
t.LoadString(IDS_SCRIPTURL);
url = t;
GetProfileString() zwraca CString.
całkowitą do formatu ciąg:
wchar_t total[32];
swprintf_s(total, 32, L"%d", trk->getInt());
wstring tot(total);
Duplikat: http://stackoverflow.com/questions/485654/pros-and-cons-of-different-string-types-in-c http://stackoverflow.com/questions/133364/how-do- you-handle-strings-in-c –
Nie był tak naprawdę duplikatem - chciałem porównać te dwie z moich konkretnych przypadków, które miały plusy i minusy dla obu. – Vanwaril