Как обнаружить пользовательский ввод CTRL-X в C++

Мне нужно завершить свою функцию, как только пользователь введет CTRL-X или '/'. Я не знаю, как обнаружить / проверить пользовательский ввод CTRL-X. Переданное мне задание гласит: "Когда вы редактируете файл, вы будете вводить данные построчно, а когда закончите, вы будете вводить"/"или CTRL + X для выхода".

Я написал этот код до сих пор. Я новичок, так что простите мой код.

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string data;
    int line_num=1;
    ofstream editFile;
    editFile.open("edit_test.txt");

    while(data!="/"){ //some kind of condition ORed with the condition already present in while loop? 
        cout<<line_num<<"> "; //I want to display line numbers every time the user presses enter
        getline(cin, data);
        if(data!="/"){
            editFile<<data<<endl;
            line_num++;
        }
    }

    editFile.close();
    return 0;   
}

1 ответ

CTRL+X - это то же самое, что и код символа 24 (поскольку X - 24-я буква алфавита). За исключением любых системных помех *, все, что вам нужно сделать, это проверить, есть ли на входе код символа 24.

while (getline( std::cin, s ))
{
  // Find ^C in s
  auto n = s.find( '\x18' );
  if (n != s.npos) s = s.substr( 0, n );

  // process s normally here

  // If ^C was found in s, we're done reading input from user
  if (n != s.npos) break;
}

CTRL+X, как правило, не привязан к каким-либо специальным системным действиям, поэтому у вас не должно возникнуть проблем с получением его в качестве входных данных.

Другие вопросы по тегам