bug*_*net 3 c c++ string bstr cstring
到目前为止,我发现我可以用两种(多种?)方式将传入的BSTR转换为ANSI,我很想知道在速度/效率等方面是否比另一种"更好".
我一直使用的方式是使用USES_CONVERSION和W2A宏,例如
BSTR __stdcall F(BSTR p1, BSTR p2 ) {
USES_CONVERSION;
LPSTR sNum1 = W2A( p1 );
LPSTR sNum2 = W2A( p2 );
Run Code Online (Sandbox Code Playgroud)
然而,最近我遇到了另一种技术:
BSTR __stdcall F(BSTR p1, BSTR p2 ) {
long amt = wcstombs( NULL, p1, 1 );
sNum1 = (char *) malloc( amt );
wcstombs( sNum1, p1, amt );
*(sNum1 + amt) = '\0';
amt = wcstombs( NULL, p2, 1 );
sNum2 = (char *) malloc( amt );
wcstombs( sNum2, p2, amt );
*(sNum2 + amt) = '\0';
Run Code Online (Sandbox Code Playgroud)
现在我授予你,它更啰嗦,并且有两个电话,wcstombs但据我所知USES_CONVERSION,W2A宏和宏可能隐藏了各种各样的乐趣和游戏.
哪个代码更有效/更快?或者,是否有另一种我可以使用的技术可以更好地完成工作?