Я считаю класс MFC / ATL CString
очень удобным в коде Win32 C ++; в частности, мне показалось удобным тот факт, что мы можем напрямую передавать экземпляры CString
в параметры LPCWSTR
(т.е. const wchar_t *
) API Win32 благодаря неявному оператору преобразования, определенному CString
.
Вместо этого при использовании std::wstring
требуется явный вызов метода .c_str()
.
Итак, почему классы строк STL (std::string
и std::wstring
) требуют явного вызова метода (c_str()
) вместо определения неявного оператора преобразования const char*
/ const wchar_t *
?
Есть ли серьезные подводные камни, скрытые с помощью операторов неявного преобразования?