Как написать аналог командной строки на c++?

Мне задали написать самый простой аналог командной строки c++. Если честно, я в душе не е..знаю как ее делать) Может есть хоть какие-нибудь статьи или гайды? Потому что я вообще ничего не нашел.


Ответы (2 шт):

Автор решения: Alex Krass

Командная строка в грубом рассмотрении представляет из себя достаточно простую функциональность. Она считывает команду, выполняет действия и показывает при необходимости вывод.

Поэтому самый простой аналог наверное будет такой:

#include <iostream>
#include <string>
 
int main()
{   
    while(true)
    {
        std::string command;
        std::cout << "$>";
        std::cin >> command;
        
        if(command == "hi")
            std::cout << "Oh, hi!" << std::endl;
        if(command == "exit")
            break;
    }
    return 0;
}

А дальше только стоит наращивать фукнциональность в зависимости от введенных команд и требований: установить текущую папку перед работой, переход по директориям, вывод файлов в директории и работа с ними, запуск других *.exe т.д. Все остальное зависит только от того, насколько сложной должна быть ваша собственная командная строка и какие возможности поддерживать.

→ Ссылка
Автор решения: Den

Не думаю, что это еще актуально, но добавлю пояснение к ответу выше.

Если вы рассмотрите стандартную командную строку, первое что должно быть это ключевое слово по типу :

  • cd (смены директории)
  • ls (вывод списка текущей директории)
  • git (для системы контроля версий)
  • и т.д.

При написании своей cmd, определите заранее этот список(или даже добавьте спец функцию для подключения того же git, по типу переменные среды как windows), а далее, если нужно посложнее сделайте небольшой парсер для входа флагов и аргументов. Например на основе очереди, а зачем через ветвления или switch уже реализуете их логику.

→ Ссылка