看来很多人还是不太清楚CBuilder2009/2010中的String
旧版本的CBuilder中,String类映射为AnsiString,在2009/2010以后的版本中,String类被映射为UnicodeString,但仍然保留AnsiString类型。将String转为字符串指针需要注意:
AnsiString只有一个.c_str()方法,返回char *
UnicodeString有三个方法:
.c_str() 返回wchar_t * (这个可能是为了兼容以前旧版本)
.w_str() 返回wchar_t *
.t_str() 返回结果取决于工程选项中_TCHAR的映射,如果映射为char,则返回char *,如果映射为wchar_t则返回wchar_t *
那么也就是说,如果_TCHAR映射为wchar_t以后,UnicodeString的三个方法返回的都是wchar_t *,如果需要返回char *数据,就要强制转换一下,如:
String str; AnsiString(str).c_str() // 这里就返回char *了 ....