Я создал несколько классов C ++ в C ++ Builder. Я сейчас использую их в приложении VCL форм. У меня есть функция, которая загружает текстовый файл и принимает строку в качестве аргумента.
Я использую элемент управления openDialog, чтобы перейти к файлу, а затем открыть его.
Моя проблема заключается в следующем: свойство .filename openFialog имеет форму UnicodeString, и моей функции нужен std :: string. Как я могу преобразовать строку Юникода в std :: string?
Вот мой код:
OpenDialog1->Execute();
calCalendar.loadAppointmentsFromFile(OpenDialog1->FileName.t_str());
Вот определение функции:
void loadAppointmentsFromFile(const std::string& stringFilename);
Я получаю следующую ошибку:
[Ошибка BCC32] Assessment2.cpp (39): E2342 Несоответствие типов в параметре ‘stringFilename’ (требуется) const std :: string &’, получил’ wchar_t * ‘)Могу ли я получить помощь, чтобы исправить эту проблему?
использование UnicodeString :: t_str чтобы получить суженную строку. Тем не менее, вы должны рассмотреть не смешивая два.
Другой вариант — преобразовать в AnsiString
первый:
AnsiString str = OpenDialog1->FileName;
std::string s(str.c_str());
loadAppointmentsFromFile(s);
Или же
std::string s = OpenDialog1->FileName.t_str(); // TCHAR mapping set to char
loadAppointmentsFromFile(s);
Других решений пока нет …