類型本質
LPCTSTR = const TCHAR*,指向寬字符(Unicode 構建)或窄字符(MBCS 構建)的只讀指針。
std::wstring = std::basic_string,擁有豐富操作接口的寬字符串類。
指針與數組區別
TCHAR wideResult[MaxResultLen]; // 字符數組,棧上分配,內容可修改
const TCHAR* wideResultPtr; // 字符指針,指向常量內容(const 修飾所指內容),指針本身可修改指向
轉換代碼
LPCTSTR → std::wstring
LPCTSTR sPath = ...;
std::wstring wsPath = sPath; // 隱式構造,拷貝內容
std::wstring → LPCTSTR
std::wstring wsPath = ...;
LPCTSTR sPath = wsPath.c_str(); // 返回內部緩衝區指針,生命周期綁定 wsPath
工程建議
- 接口傳遞、存儲用
LPCTSTR(輕量、無額外分配)。
- 需要拼接、查找、替換等複雜操作時,轉
std::wstring 處理完再轉回。
- 注意
c_str() 返回指針隨 wstring 銷毀而失效,勿長期持有。
本文出自「賣萌程序員」博客,轉載請保留出處:原文鏈接