2

我在 C++ Builder 中创建了一些 C++ 类。我现在在 VCL 表单应用程序中使用这些。我有一个加载文本文件并将字符串作为参数的函数。

我正在使用 openDialog 控件浏览到文件然后将其打开。

我的问题是:openFialog 的 .filename 属性是 UnicodeString 的形式,我的函数需要一个 std::string。如何将 unicode 字符串转换为 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 *”)

我可以帮忙解决这个问题吗?

4

1 回答 1

1

使用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);
于 2012-09-24T04:03:52.097 回答