char buffer[MAX_PATH];
GetModuleFileNameA( NULL, buffer, MAX_PATH );
PathRemoveFileSpecA(buffer);
// c: d: 和后边路径合并
char cfg_path[MAX_PATH];
PathCombineA(cfg_path, buffer, "config.cfg");
char* s = PathFindExtensionA(cfg_path);
fmt::print("{}\n", s);
char* s2 = PathFindFileNameA(cfg_path);
fmt::print("{}\n", s2);
char* s3 = PathFindNextComponentA(cfg_path);
fmt::print("{}\n", s3);
// 普通的路径增加,注意第一个参数
char buffer_1[MAX_PATH] = "name_1\\name_2";
PathAppendA(buffer_1, "def\\123");
// 文件或文件夹是否存在1就代表存在
int ret = PathFileExistsA("d:\\log1.txt");
int ret2 = PathFileExistsA("E:\\vs2010-c++\\fmtTest");
得到模块或是exe的运行目录的函数:
static bool GetSelfModulePath(char* path)
{
MEMORY_BASIC_INFORMATION mbi;
HMODULE dllHandle = ((::VirtualQuery(GetSelfModulePath, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
char t_path[MAX_PATH] = { 0 };
GetModuleFileNameA(dllHandle, t_path, MAX_PATH);
PathRemoveFileSpecA(t_path);
strcpy_s(path, sizeof(t_path), t_path);
return true;
}
static bool GetSelfModulePath2(char* path, char* combinFileName)
{
MEMORY_BASIC_INFORMATION mbi;
HMODULE dllHandle = ((::VirtualQuery(GetSelfModulePath2, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
char t_path[MAX_PATH] = { 0 };
GetModuleFileNameA(dllHandle, t_path, MAX_PATH);
PathRemoveFileSpecA(t_path);
PathCombineA(path, t_path, combinFileName);
return true;
}
调用:
char DllPath[MAX_PATH] = {0};
GetSelfModulePath(DllPath);
PathRemoveFileSpecA(DllPath);
char domainPath[MAX_PATH] = { 0 };
PathCombineA(domainPath, DllPath, "domain.ini");
char url[256] = { 0 };
GetPrivateProfileStringA("url", "drdata", "", url, sizeof(url),domainPath);
char abc[256] = { 0 };
GetSelfModulePath2(abc, "domain.ini");
这两天和go语言访问json设计到utf8与ascii串互相转换
// 先获取这个头文件并加入是vs2015工程
// UnicodeConversions/utf8conv.h at master · GiovanniDicanio/UnicodeConversions · GitHub
#include "Utf8Conv.h"
// ascii 串转成utf8 串
CStringW sss = L"你好";
string testJson = GiovanniDicanio::win32::Utf8FromUtf16(sss);
// utf8 串转成ascii串
const std::string kinU8 = "\xE9\x87\x91";
CStringW invalidUtf16 = GiovanniDicanio::win32::Utf16FromUtf8(kinU8);