2013-11-10 33 views
3

如下面的代碼:int轉換成LPCWSTR使用wsprintf

int a = 16; 
wchar_t *buffer = {0}; 
wsprintf(buffer,L"%d", a); 

MessageBox(NULL, buffer, buffer, MB_OK); 

我想隱蔽的int LPCWSTR爲了把消息框。 我真的很新手使用wsprintf。任何人都可以幫我使用這個函數清楚地解釋我? (請,我也看了MSDN,但仍dont't清晰)

我的意思是,我想在MessageBox中

+1

'wsprintf'共享相同的規定,即'的sprintf()'一樣。你需要一個有效的地址來寫你的輸出,而你最肯定不會用'wchar_t * buffer = {0}提供;'如果你不知道,'wsprintf()'是一個Microsoft Windows 'ism,不要與['swprintf()'](http://en.cppreference.com/w/c/io/fwprintf)混淆,來自標準庫的'sprintf()'寬字符版本。 – WhozCraig

回答

5

打印 「16」 你初始化buffernullptr。只要創建的wchar_t s表示你分配足夠的空間陣列和你打爆:

int a = 16; 
wchar_t buffer[256]; 
wsprintfW(buffer, L"%d", a); 
MessageBoxW(nullptr, buffer, buffer, MB_OK); 
+1

+1用於Windows API的強制寬字符版本。 (當然也包括有效的寫入緩衝區)。 – WhozCraig