高版本BUILDER编译环境下,可不可以不使用TCHAR,让函数返回char
高版本BUILDER编译环境下,能否不使用TCHAR,让函数返回char *
在高版本的BUILDER环境下编译不通过,需要改成以下代码才能编译成功
能否做到不使用TCHAR,让函数返回char *?
------解决思路----------------------
用 AnsiString 就行了。低版本 CBuilder 中,String 默认是映射为 AnsiString,但是 2009+ 以后,String 就映射成 UnicodeString 了,所以,如果需要 String 返回 char * 数据,就显式使用 AnsiString,如:
char *test(char *output)
{
String a = "haha";
strcpy(output,a.c_str());
return output;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *b = new char[10];
ShowMessage(test(b));
}
在高版本的BUILDER环境下编译不通过,需要改成以下代码才能编译成功
#include<tchar.h>
TCHAR *test(TCHAR *output)
{
String a = "haha";
_tcscpy(output,a.c_str());
return output;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCHAR *b = new TCHAR[10];
ShowMessage(test(b));
}
能否做到不使用TCHAR,让函数返回char *?
------解决思路----------------------
用 AnsiString 就行了。低版本 CBuilder 中,String 默认是映射为 AnsiString,但是 2009+ 以后,String 就映射成 UnicodeString 了,所以,如果需要 String 返回 char * 数据,就显式使用 AnsiString,如:
char *test(char *output)
{
AnsiString a = "haha";
strcpy(output,a.c_str());
return output;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *b = new char[10];
ShowMessage(test(b));
}