将unicode字符串转换为字符串

时间:2012-09-24 03:54:22

标签: c++ string class unicode typeconverter

我在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 *')

我可以请一些帮助来纠正这个问题吗?

1 个答案:

答案 0 :(得分: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);