void main() { const int ARRAY_LEN = 20; char szPathTest[][ARRAY_LEN] = {"C:\What.nani", "Why.nani", ".\Where.nani", "..\When.nani", "...How.nani", "?Why.nani", "...\How.nani" }; int len = sizeof(szPathTest) / sizeof(szPathTest[0]); for(int i = 0; i < len; i++) { WCHAR szBuffer[ARRAY_LEN] = {0}; MultiByteToWideChar(CP_UTF8, NULL, szPathTest[i], -1, szBuffer, ARRAY_LEN); if(PathIsRelative(szBuffer)) cout<<szPathTest[i]<<" "<<"YES"<<endl; else cout<<szPathTest[i]<<" "<<"NO"<<endl; } system("pause"); }
测试结果:
C:What.nani NO
Why.nani YES
.Where.nani YES
..When.nani YES
...How.nani YES
?Why.nani YES
...How.nani YES
请按任意键继续. . .
结论:PathIsRelative使用前一定要保证传进来的Path是有效的。它本身并不能保证。