wsprintf要求的第一個參數(shù)是LPTSTR,假設(shè)環(huán)境是UNICODE的,那么LPTSTR相當于就是wchar_t* 就是寬字符指針,在非Unicode環(huán)境下就是char*。 有關(guān)格式化字符串的函數(shù)還有如下,詳細用法各位可以查看MSDN,和上面所介紹的都差不多: sprintf 單字節(jié)版本的C/C++庫函數(shù) swprintf 寬字節(jié)版本的C/C++庫函數(shù) 而我們上面的wsprintf和上面兩個函數(shù)看起來很相似,大家不要搞混淆了啊,wsprintf最前面的w不是代表Wide,寬字節(jié)的意思了,而是Windows的W,代表是windows的API函數(shù)了,其實它是一個宏這在上面已經(jīng)說過了,真正的API函數(shù)其實是wsprintfA和wsprintfW這兩個,在不嚴格的情況下通常我們也說wsprintf是函數(shù)。 1. C 函數(shù) / Windows API 函數(shù)(C函數(shù)則可以跨平臺, WinAPI一般函數(shù)多個字母w, 可以運行于內(nèi)核模式) _stprintf wsprintf 2.ASCII(MBCS) / Unicode(C函數(shù)的Unicode版本通常多一個w, Windows的版本區(qū)分是通過后綴的A或者W) _stprintf / sprintf / swprintf wsprintf / wsprintfA / wsprintfW 3.變參 / va_list(va_list版本一般多一個v) _stprintf / sprintf / swprintf wsprintf / wsprintfA / wsprintfW _vtprintf / vprintf / vwprintf wvsprintf / wvsprintfA / wvsprintfW 4. 后綴 _p 表示格式字符中用類似 %1$s 來指定該處使用的參數(shù)序號和類型(positional), 后綴 _l 表示可以指定字符集類型(local) _tprintf_p / _printf_p / _wprintf_p _tprintf_l / _printf_l / _wprintf_l _tprintf_p_l / _printf_p_l / _wprintf_p_l 5. 其他(檢查需要的緩沖區(qū)大?。?br> _sctprintf / _scprintf / _scwprintf _sctprintf_l / _scprintf_l / _scwprintf_l _sctprintf_p / _scprintf_p / _scwprintf_p _sctprintf_p_l / _scprintf_p_l / _scwprintf_p_l 6. 安全版本 字符串帶緩沖去大小檢查的安全版本函數(shù)在后面加 _s strcpy / strcpy_s 對于C++, 這些函數(shù)有個char數(shù)組的template重載,如果定義 #define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1 則 strcpy用char[]做參數(shù)時, 將由重載自動轉(zhuǎn)換為對 strcpy_s 的調(diào)用 7. 帶buffer大小限制的函數(shù), 通常多一個字母n 如果把其中的count參數(shù)設(shè)置為_TRUNCATE, 則如果數(shù)據(jù)太長就進行截斷處理 _sntprintf / _snprintf / _snwprintf _sntprintf_l / _snprintf_l / _snwprintf_l _sntprintf_s / _snprintf_s / _snwprintf_s _sntprintf_s_l / _snprintf_s_l / _snwprintf_s_l _vsntprintf / _vsnprintf / _vsnwprintf _vsntprintf_l / _vsnprintf_l / _vsnwprintf_l _vsntprintf_s / _vsnprintf_s / _vsnwprintf_s _vsntprintf_s_l / _vsnprintf_s_l / _vsnwprintf_s_l 【參考資料 感謝作者】 http://zxjgoodboy.blog.sohu.com/136236437.html
|