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