add new api

This commit is contained in:
2025-05-08 17:09:30 +08:00
parent dd14396b0a
commit 4a6de34a64
2 changed files with 22 additions and 1 deletions

View File

@@ -158,4 +158,23 @@ bool wchar_util::getArgv(char**& argv, int& argc) {
void wchar_util::freeArgv(char** argv, int argc) {
freePointerList<char*>(argv, argc, nullptr);
}
bool wchar_util::getArgv(std::vector<std::string>& argv) {
auto cmd = GetCommandLineW();
int argcw = 0;
auto argvw = CommandLineToArgvW(cmd, &argcw);
if (!argvw) return false;
bool ret = true;
for (int i = 0; i < argcw; i++) {
std::wstring s = argvw[i];
std::string r;
if (!wchar_util::wstr_to_str(r, s, CP_UTF8)) {
ret = false;
break;
}
argv.push_back(r);
}
LocalFree(argvw);
return ret;
}
#endif

View File

@@ -1,6 +1,7 @@
#ifndef _UTIL_WCHAR_UTIL_H
#define _UTIL_WCHAR_UTIL_H
#include<string>
#include <string>
#include <vector>
#if _WIN32
#include <Windows.h>
#endif
@@ -45,6 +46,7 @@ namespace wchar_util {
*/
bool getArgv(char**& argv, int& argc);
void freeArgv(char** argv, int argc);
bool getArgv(std::vector<std::string>& argv);
#endif
}
#endif