簡體   English   中英

如何將BSTR傳遞給printf?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM