这是读取STDIN所有行的功能:
string readStdin() {
stringstream ss;
string line;
while (getline(cin, line)) {
ss << line << endl;
}
return ss.str();
}
这是用于阅读用户角色:
TCHAR pressAnyKey( const TCHAR* prompt = "Press any key to continue..." ) {
TCHAR ch;
DWORD mode;
DWORD count;
HANDLE hstdin(GetStdHandle( STD_INPUT_HANDLE ));
// Prompt the user
if (prompt != NULL) {
WriteConsole(
GetStdHandle( STD_OUTPUT_HANDLE ),
prompt,
lstrlen( prompt ),
&count,
NULL
);
}
// Switch to raw mode
GetConsoleMode( hstdin, &mode );
SetConsoleMode( hstdin, 0 );
// Wait for the user's response
WaitForSingleObject( hstdin, INFINITE );
// Read the (single) key pressed
ReadConsole( hstdin, &ch, 1, &count, NULL );
// Restore the console to its previous state
SetConsoleMode( hstdin, mode );
// Return the key code
return ch;
}
在调用用于读取stdin的函数之后,用于读取用户密钥的代码产生了一种奇怪的编辑器状态,其中按下键不会导致返回到程序操作,而是在键入时在控制台上显示输入,并且没有办法返回计划。