我正在用现代C++20编写我的项目。这个应用程序就像图形模式下的终端/控制台,您可以在其中输入带有各自参数的命令,终端将识别第一个单词,如果在其内部映射中找到它,它会调用映射函数(命令本身) 。这很好用。但现在,我意识到有些命令需要用户交互。例如,如果我想从MS-DOS重新创建del命令,并且用户键入,该命令将需要从键盘获取一个字符(表示是,表示否)。其他一些命令将要求用户键入整个字符串。我怎样才能做到这一点?我正在考虑将我的命令实现为协程,这样我就可以暂停执行,让终端知道我想要单个字符或完整字符串,然后恢复。但我发现协程有点复杂。到目前为止,我有这段代码del *.bak /pyn
enum class e_command_input { SINGLE_CHAR, STRING };
class OS_Command
{
public:
// Forward declaration
struct promise_type;
using t_handle = std::coroutine_handle<promise_type>;
struct promise_type
{
// Creates the command
auto get_return_object() -> OS_Command
{
return OS_Command{ t_handle::from_promise(*this) };
}
auto initial_suspend() -> std::suspend_always
{
cout << " Command starts running" << endl;
return {};
}
auto final_suspend() noexcept -> std::suspend_always
{
cout << " Command finishes …Run Code Online (Sandbox Code Playgroud)