Преобразовать строку в Юникоде в строку

Я создал несколько классов 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 * ‘)

Могу ли я получить помощь, чтобы исправить эту проблему?

2

Решение

использование 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]