C++ builder 2009,如何完成如此类型转换?

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:10:12
OpenDialog1->FileName出来的是UnicodeString,而CopyFile所需要的参数类型却是wchar_t,请问应当如何转换?
String files,filed ;

files = OpenDialog1->FileName;
filed = *dir+"temp_rom.gba";
files = files.c_str();
filed = filed.c_str() ;
String filecopy;

filecopy = CopyFileW(&files,&filed
,FALSE);

[BCC32 Error] interface.cpp(71): E2034 Cannot convert 'UnicodeString *' to 'const wchar_t *'
[BCC32 Error] interface.cpp(71): E2342 Type mismatch in parameter 'lpExistingFileName' (wanted 'const wchar_t *', got 'UnicodeString *')

是您提供的方法不大对,还是我哪里理解错误了呢……

UnicodeString ss;
ss.c_str(); //得到wchar_t*
ss.t_str(); //得到char_t*
-----------------------------------------------------
楼主还有些概念没有弄清楚,我就不一一啰嗦了,下面的代码我已经测试过了。

UnicodeString files,filed ;
const char* dir="c:\\";
BOOL filecopy;
if(OpenDialog1->Execute(this->Handle))
{
files = OpenDialog1->FileName;
filed = UnicodeString(dir)+UnicodeString("temp_rom.gba");
//注意看下面2个的不同之处。
filecopy=CopyFile( files.t_str(),filed.t_str(),FALSE);
filecopy=CopyFileW( files.c_str(),filed.c_str(),FALSE);
}