2009年7月29日 星期三

PathFindExtension 居然這麼難!

今天為了這個搞到快瘋掉。

最後的成果是這樣的:

ILenum  GetILImageType(const char* filename)
{
            string name_ext = PathFindExtension(filename);
            std::transform(name_ext.begin(), name_ext.end(),name_ext.begin(), ::toupper);

            if(name_ext.compare(".JPEG") == 0)
                return IL_JPG;
            if(name_ext.compare(".JPG") == 0)
                return IL_JPG;

........

return IL_TYPE_UNKNOWN;

 

}

看起來很簡單是吧!?其實有夠痛苦!

LPTSTR PathFindExtension(      
    LPCTSTR pPath
);
要加include,沒問題,很直覺
#include <shlwapi.h>
結果,link時過不了,頭超大,幸好後來找到這個:
#pragma comment(lib, "Shlwapi.lib")
 
然後白忙了半天發現,char* 可以直接轉成LPCTSTR,LPCTSTR也可以直接轉成 string。真方便。
接下來也是痛苦,要全轉成大寫居然是件這麼困難的事!
std::transform(name_ext.begin(), name_ext.end(),name_ext.begin(), ::toupper); 
這個可以,不過也要include
#include <algorithm> 
然後要做String 的比對,看半天才知道要用compare。
 
真的是,講沒幾分鐘...寫起來真是要人命!