Can CString::Format() получить const std :: string?Может ли CString :: Format() получать const std :: string?
Пример:
void some_func(const std::string a_string)
{
CString b_string("World");
CString c_string;
c_string.Format("%s %s!", a_string, b_string);
/* print c_string */
};
Спасибо миллион @Zac! Поэтому я думаю, что const не была проблемой, но на самом деле была std :: string в качестве параметра для CString :: Format(). Как получилось, что это скомпилировано ?! – Jonathan
Если вы программируете более чем на пару дней, @Jonathan, вы узнаете, что многие вещи компилируются, даже если они не работают. Функция 'CString :: Format' принимает все свои параметры формата в аргументе' ... ', который принимает значения любого типа. Однако, когда значение имеет определенный пользователем тип класса (который включает в себя 'std :: string'), C++ Standard говорит, что поведение результирующей программы не определено. Формально, использование 'CString' без трансляции также не определено, но класс использует специальные трюки, чтобы убедиться, что он работает с любыми компиляторами, поддерживаемыми MFC. –
Трудно поверить, что они подойдут для поддержки CString, но пренебрегают std :: string. Угадайте, только MS может это сделать ... – Jonathan