path.hpp

概要
プロトタイプ宣言動作説明
std::string getPath (const char* pPath);ファイル名の除去
char* getFileName (const char* pPath);ファイル名の抽出
std::string getFileName_withoutExtension(const char* pPath);拡張子を除いたファイル名の抽出
char* getExtension (const char* pPath);拡張子の抽出
std::vector parsePath (const char* pPath);パスをパース
std::vector parsePath_withBase(const char* pPath);パスをディレクトリ構成を保ったままパース
使用例
#include <sstd/sstd.hpp>

int main(){
    const char* pPath="./abc/def/text.abc.txt\0";
    
    printf("Input pPath: %s\n", pPath);
    printf("Output getPath: %s\n",                     sstd::getPath                     (pPath).c_str());
    printf("Output getFileName: %s\n",                 sstd::getFileName                 (pPath)        );
    printf("Output getFileNameWithoutExtension: %s\n", sstd::getFileName_withoutExtension(pPath).c_str());
    printf("Output getFileExtension: %s\n",            sstd::getExtension                (pPath)        );
    printf("\n");

    sstd::printn(sstd::parsePath(R"(C:\a\b)"));
    sstd::printn(sstd::parsePath(R"(/a/b)"));
    sstd::printn(sstd::parsePath(R"(./a/b)"));
    sstd::printn(sstd::parsePath(R"(../a/b)"));
    sstd::printn(sstd::parsePath(R"(../a/b/)"));
    sstd::printn(sstd::parsePath(R"(a/b/)"));
    printf("\n");

    sstd::printn(sstd::parsePath_withBase(R"(C:\a\b)"));
    sstd::printn(sstd::parsePath_withBase(R"(/a/b)"));
    sstd::printn(sstd::parsePath_withBase(R"(./a/b)"));
    sstd::printn(sstd::parsePath_withBase(R"(../a/b)"));
    sstd::printn(sstd::parsePath_withBase(R"(../a/b/)"));
    sstd::printn(sstd::parsePath_withBase(R"(a/b/)"));
}

実行結果
$ ./exe.exe
Input pPath: ./abc/def/text.abc.txt
Output getPath: ./abc/def/
Output getFileName: text.abc.txt
Output getFileNameWithoutExtension: text.abc
Output getFileExtension: txt

sstd::parsePath(R"(C:\a\b)")[3] = [ C: a b ]
sstd::parsePath(R"(/a/b)")[2] = [ a b ]
sstd::parsePath(R"(./a/b)")[3] = [ . a b ]
sstd::parsePath(R"(../a/b)")[3] = [ .. a b ]
sstd::parsePath(R"(../a/b/)")[3] = [ .. a b ]
sstd::parsePath(R"(a/b/)")[2] = [ a b ]

sstd::parsePath_withBase(R"(C:\a\b)")[3] = [ C: C:/a C:/a/b ]
sstd::parsePath_withBase(R"(/a/b)")[2] = [ a a/b ]
sstd::parsePath_withBase(R"(./a/b)")[3] = [ . ./a ./a/b ]
sstd::parsePath_withBase(R"(../a/b)")[3] = [ .. ../a ../a/b ]
sstd::parsePath_withBase(R"(../a/b/)")[3] = [ .. ../a ../a/b ]
sstd::parsePath_withBase(R"(a/b/)")[2] = [ a a/b ]
実装

0 件のコメント:

コメントを投稿