6 #ifdef PLATFORM_WINDOWS 22 cout << (defaultResponse == Response::Yes ?
'Y' :
'y');
23 cout <<
'/' << (defaultResponse == Response::No ?
'N' :
'n');
28 if(line ==
"y" || line ==
"Y" || (defaultResponse == Response::Yes && line.empty())) {
30 }
else if(line ==
"n" || line ==
"N" || (defaultResponse == Response::No && line.empty())) {
33 cout <<
"Please enter [y] or [n]: ";
39 #ifdef PLATFORM_WINDOWS 49 if(
auto *consoleWindow = GetConsoleWindow()) {
50 PostMessage(consoleWindow, WM_KEYUP, VK_RETURN, 0);
64 if(!AttachConsole(ATTACH_PARENT_PROCESS) && !AllocConsole()) {
68 auto stdHandle =
reinterpret_cast<intptr_t
>(GetStdHandle(STD_OUTPUT_HANDLE));
69 auto conHandle = _open_osfhandle(stdHandle, _O_TEXT);
70 auto fp = _fdopen(conHandle,
"w");
72 setvbuf(stdout, NULL, _IONBF, 0);
74 stdHandle =
reinterpret_cast<intptr_t
>(GetStdHandle(STD_INPUT_HANDLE));
75 conHandle = _open_osfhandle(stdHandle, _O_TEXT);
76 fp = _fdopen(conHandle,
"r");
78 setvbuf(stdin, NULL, _IONBF, 0);
80 stdHandle =
reinterpret_cast<intptr_t
>(GetStdHandle(STD_ERROR_HANDLE));
81 conHandle = _open_osfhandle(stdHandle, _O_TEXT);
82 fp = _fdopen(conHandle,
"w");
84 setvbuf(stderr, NULL, _IONBF, 0);
85 #ifdef CPP_UTILITIES_FORCE_UTF8_CODEPAGE 88 SetConsoleCP(CP_UTF8);
89 SetConsoleOutputCP(CP_UTF8);
92 ios::sync_with_stdio(
true);
101 pair<vector<unique_ptr<char[]> >, vector<char *> > convertArgsToUtf8()
103 pair<vector<unique_ptr<char[]> >, vector<char *> > res;
106 LPWSTR *argv_w = CommandLineToArgvW(GetCommandLineW(), &argc);
107 if(!argv_w || argc <= 0) {
111 res.first.reserve(static_cast<size_t>(argc));
112 res.second.reserve(static_cast<size_t>(argc));
113 for(LPWSTR *i = argv_w, *end = argv_w + argc; i != end; ++i) {
114 int requiredSize = WideCharToMultiByte(CP_UTF8, 0, *i, -1,
nullptr, 0, 0, 0);
115 if(requiredSize <= 0) {
119 auto argv = make_unique<char[]>(
static_cast<size_t>(requiredSize));
120 requiredSize = WideCharToMultiByte(CP_UTF8, 0, *i, -1, argv.get(), requiredSize, 0, 0);
121 if(requiredSize <= 0) {
125 res.second.emplace_back(argv.get());
126 res.first.emplace_back(move(argv));
Contains currently only ArgumentParser and related classes.
bool CPP_UTILITIES_EXPORT confirmPrompt(const char *message, Response defaultResponse=Response::None)
Prompts for confirmation displaying the specified message.
Response
The Response enum is used to specify the default response for the confirmPrompt() method...