mirror of
https://github.com/lifegpc/c-utils.git
synced 2026-07-08 01:30:39 +08:00
add new api
This commit is contained in:
@@ -158,4 +158,23 @@ bool wchar_util::getArgv(char**& argv, int& argc) {
|
|||||||
void wchar_util::freeArgv(char** argv, int argc) {
|
void wchar_util::freeArgv(char** argv, int argc) {
|
||||||
freePointerList<char*>(argv, argc, nullptr);
|
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
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#ifndef _UTIL_WCHAR_UTIL_H
|
#ifndef _UTIL_WCHAR_UTIL_H
|
||||||
#define _UTIL_WCHAR_UTIL_H
|
#define _UTIL_WCHAR_UTIL_H
|
||||||
#include<string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -45,6 +46,7 @@ namespace wchar_util {
|
|||||||
*/
|
*/
|
||||||
bool getArgv(char**& argv, int& argc);
|
bool getArgv(char**& argv, int& argc);
|
||||||
void freeArgv(char** argv, int argc);
|
void freeArgv(char** argv, int argc);
|
||||||
|
bool getArgv(std::vector<std::string>& argv);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user