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

Мне нужно завершить свою функцию, когда пользователь вводит CTRLИкс или же ‘/’. Я не знаю, как обнаружить / проверить пользовательский ввод CTRLИкс.
Задание, данное мне, гласит:
«Когда вы редактируете файл, вы будете вводить данные построчно, а когда закончите, вы будете вводить‘/‘ или же CTRL + Икс выходить.’

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

#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;
}

0

Решение

CTRL+Икс такой же, как код символа 24 (так как Икс 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+Икс к нему не привязаны какие-либо специальные системные действия, поэтому у вас не должно возникнуть проблем с получением его в качестве входных данных.

0

Другие решения

Других решений пока нет …