[英]How to pass BSTR to printf?
我有一個使用VS2013構建的非Unicode(MBCS)C ++項目。
給定一個BSTR
值,我應該如何安全地將該值傳遞給printf?
BSTR
實際上是具有先前長度信息的WCHAR*
。 您可以忽略該長度部分以進行打印。 所以:
BSTR str = foo();
printf("%S", str); // Capital S
BSTR
是指向長度為前綴(偏移量為-4)和0
終止的寬字符字符串的指針。 您可以將其傳遞給能夠處理以0
終止的寬字符字符串的任何函數。 (實際的字符串從偏移量0
開始。)
如果目標函數不能處理寬字符,那么你需要的字符串多字節字符(這是,如果你想使用標准的情況下轉換printf
其中S
類型字段字符不可用)。 此(已評論)鏈接提供有關此信息: 將BSTR轉換為char *
@MSalters的答案具有代碼示例(不想重復2條瑣碎的行): https ://stackoverflow.com/a/32482688/682404
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.