C++ String 关于 路径 字符串处理的一些操作


//tchar 转 string
static string TCHAR2STRING(TCHAR* STR)
{

    int iLen = WideCharToMultiByte(CP_ACP, 0, STR, -1, NULL, 0, NULL, NULL);

    char* chRtn = new char[iLen*sizeof(char)];

    WideCharToMultiByte(CP_ACP, 0, STR, -1, chRtn, iLen, NULL, NULL);

    std::string str(chRtn);

    delete[] chRtn;

    return str;

}

// 取文件夹名字 无后缀
static string g_getFolderPath(string str)
{
    string::size_type idx = str.rfind('\\', str.length());
    string folder = str.substr(0, idx);
    return folder;
}

// 取后缀
static string g_getFileSuffix(string str)
{
    string::size_type idx = str.rfind('.', str.length());
    string suffix = str.substr(idx + 1, str.length());
    return suffix;
}

// 取文件名字 不包括后缀
static string g_getFileName(string str)
{
    string::size_type idx = str.rfind('\\', str.length());
    string::size_type pidx = str.rfind('.', str.length());
    string filename = str.substr(idx + 1, pidx - (idx + 1));
    return filename;
}

// 去掉后缀
static string g_getRemoveSuffix(string str)
{
    string::size_type idx = str.rfind('.', str.length());
    string filename = str.substr(0, idx);
    return filename;
}

// 取文件名字 包括后缀
static string g_getFileNameAll(string str)
{
    string::size_type idx = str.rfind('\\', str.length());
    string name_all = str.substr(idx + 1, str.length());
    return name_all;
}


// 得到分段for 下划线
static const vector g_getPiecewiseForUnderline(string str)
{
    //vector vec_idx;
    vector vec_str;
    string::size_type bidx = 0;
    while (true)
    {
        string::size_type idx = str.find('_', bidx);
        string str_temp = str.substr(bidx, idx - bidx);
        vec_str.push_back(str_temp);
        if (idx == string::npos)
        {
            break;
        }
        //vec_idx.push_back(idx);
        bidx = idx + 1;
    }
    return vec_str;
}

你可能感兴趣的:(C++ String 关于 路径 字符串处理的一些操作)