Mam funkcję, którą chcę zmienić, w tej chwili mam dwie różne wersje dla std::string
i std::wstring
.Szablony i stałe ciągi znaków
funkcję (demontowany) jest podobny do tego
template <class T, class _Tc>
std::vector<T> TokenizeArgs(const T& in) {
const T tofind = T("\"' ");
.. do stuff ..
}
T
jest albo std::string
lub std::wstring
i _Tc
jest albo char
lub wchar_t
. Mam problem z uzyskiwaniem stałych ciągów, które zdefiniowałem do pracy w wersji szablonu. Powyższy kod działa pod numerem std::string
, ale nie dla std::wstring
, ponieważ nie ma konstruktora dla std::wstring
, który pobiera tablicę char*
. Normalnie, aby to naprawić, zadeklarowałbym ciąg stały jako const T tofind = L"\"' "
, ale wtedy nie działałby z std::string
.
Nie mam dużego doświadczenia z szablonami, więc nie wiem, jak rozwiązać ten problem.
@ BЈовић Cóż, tak bym pomyślał, ponieważ funkcje są identyczne – user1520427