我怎樣才能從一個Unicode路徑名(LPWSTR)轉換爲ASCII等效?被調用的庫只能理解c字符串。如何將Unicode路徑轉換爲c字符串?
編輯: 好吧,我把GetShortPathName和調用WideCharToMultiByte建議,並創建了一段代碼,我用含路徑Unicode字符的一些文件夾,測試,它完美地工作:
wlength = GetShortPathNameW(cpy,0,0);
LPWSTR shortp = (LPWSTR)calloc(wlength,sizeof(WCHAR));
GetShortPathNameW(cpy,shortp,wlength);
clength = WideCharToMultiByte(CP_OEMCP, WC_NO_BEST_FIT_CHARS, shortp, wlength, 0, 0, 0, 0);
LPSTR cpath = (LPSTR)calloc(clength,sizeof(CHAR));
WideCharToMultiByte(CP_OEMCP, WC_NO_BEST_FIT_CHARS, shortp, wlength, cpath, clength, 0, 0);
但是不是LPWSTR的短路嗎?也許OP正在尋找類似WideCharToMultiByte的東西? – 2010-06-01 17:22:57
我實際上是在尋找這兩者的組合。 – metafex 2010-06-01 17:30:24
@metafex:或許你應該編輯你的問題。這是被接受的答案似乎沒有道理,問題是目前的問題。 – 2010-06-01 17:34:32