Posted at

C++でのフルパス(std::string)から拡張子を抽出

More than 5 years have passed since last update.

[参考URL]stringによる文字列処理

http://www.slis.tsukuba.ac.jp/~fujisawa.makoto.fu/cgi-bin/wiki/index.php?string%A4%CB%A4%E8%A4%EB%CA%B8%BB%FA%CE%F3%BD%E8%CD%FD

/*!

* パスから拡張子を小文字にして取り出す
* @param[in] path ファイルパス
* @return (小文字化した)拡張子
*/

inline string GetExtension(const string &path) {
string ext;
size_t pos1 = path.rfind('.');
if(pos1 != string::npos){
ext = path.substr(pos1+1, path.size()-pos1);
string::iterator itr = ext.begin();
while(itr != ext.end()){
*itr = tolower(*itr);
itr++;
}
itr = ext.end()-1;
while(itr != ext.begin()){ // パスの最後に\0やスペースがあったときの対策
if(*itr == 0 || *itr == 32){
ext.erase(itr--);
}
else{
itr--;
}
}
}

return ext;
}