Мне нужно завершить свою функцию, когда пользователь вводит 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;
}
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+Икс к нему не привязаны какие-либо специальные системные действия, поэтому у вас не должно возникнуть проблем с получением его в качестве входных данных.
Других решений пока нет …