Все остальные ответы не совсем касались того, что я искал, чтобы конвертировать CString
на лету, а не сохранять результат в переменной.
Решение похоже на приведенное выше, но нам нужен еще один шаг для создания экземпляра безымянного объекта. Я иллюстрирую на примере. Вот моя функция, которая нуждается в std::string
, но у меня есть CString
.
void CStringsPlayDlg::writeLog(const std::string &text)
{
std::string filename = "c:\\test\\test.txt";
std::ofstream log_file(filename.c_str(), std::ios_base::out | std::ios_base::app);
log_file << text << std::endl;
}
Как позвонить, когда у вас есть CString
?
std::string firstName = "First";
CString lastName = _T("Last");
writeLog( firstName + ", " + std::string( CT2A( lastName ) ) );
Обратите внимание, что последняя строка не является прямой трансляцией типов, но мы создаем безымянный объект std::string
и предоставляем CString
через его конструктор.