Как вывести в консоль строку, которую потом можно будет изменять? C++

Я новичок и создаю простейший консольный ТуДу Лист на плюсах. Хочу создать метод, изменяющий выбранную задачу(в случае опечатки например). При этом хочется чтобы в консоль выводилось предыдущее содержимое этой задачи, которое можно было бы изменять, а затем считать и отправить исправленный вариант. Всё это чтобы не пришлось перепечатывать задачу заново из-за мелкой ошибки. Пока он просто выводит прошлую строку без возможности изменения. Есть ли возможность подобное реализовать?

    void ChangingTask(){
        cout << "Which task you want to change?\n";
        cout << "0. Back\n";
        cin >> TaskNumber;
        if(TaskNumber == 0){
                return ShowMainMenu();
        }
        else if(TaskNumber < 0 || TaskNumber > allTasks.size()){
            cout << "Incorrect task number!\n\n";
            return ChangingTask();
        }

        cout << allTasks[TaskNumber]
        cin.ignore();
        getline(cin, singleTask);
        allTasks[TaskNumber - 1] = singleTask;
        ChangedOrNot = true;
        return ShowMainMenu();
        }

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

Автор решения: user553511

попробуйте отлавливать нажатие backspace. например, так:

#include <iostream>
#include <conio.h>
#include <string>
#define BACKSPACE 8
#define ESC 27 

std::string EditText(std::string text) {
    std::cout << text;
    while (true) {
        int inp = _getch();
        if (inp == BACKSPACE) {
            text = text.substr(0, text.length()-1);
        }
        else if (inp == ESC) {
            return text;
        }
        else {
            text += inp;
        }
        system("cls");
        std::cout << text;
    }
}
→ Ссылка
Автор решения: Stanislav Volodarskiy

Строчный редактор с редактированием командами. В примере программа в цикле печатает строку, позицию курсора и приглашение для ввода команды. Пользователь печатает команду, жмёт Enter. Например:

Купить свежую рыбу.             # строка которую предлагается редактировать
-                               # позиция курсора
> w                             # команда "курсор на следующее слово"
Купить свежую рыбу.             # программа печатает строку снова
       -                        # положение курсора изменилось
> cw консервированную           # "change word" и аргумент
Купить консервированную рыбу.   # слово над курсором замено новым текстом
                       -        # курсор тоже подвинулся
> u                             # отменить последнюю команду
Купить свежую рыбу.             # правка отменена
       -                        # положение курсора вернулось
> q                             # редактирование завершилось

Нужны команды для перемещения курсора (0 h l w b e $ f F ;), для редактирования (d x X r i I a A c dw cw y yw p P s/.../.../), для отмены/повтора команд (u U uu UU).

P.S. Я вимер (пользователь Vim) - мне будет удобно. Если вы привыкли к редактированию на экране, то придётся попотеть.

P.P.S. Не нужно топать ногами, если вам не удобно. Я всё понимаю, нормальный строчный редактор удобнее. Предложенный вариант хорош тем что его можно реализовать на стандартном C/C++ и он будет работать везде. Строчные редакторы зависят от платформы. Ни одного переносимого я не нашёл.

→ Ссылка