Извинения для (предыдущего?) Плохо сформулированного вопросаC++ Предотвращение CMD команда используется
Я пытаюсь предотвратить CMD команды используются. В частности, F6 - единственная кнопка, с которой я не могу работать. Ввод F6 закрывает программу или выполняет функцию userName().
Из-за того, что F6 или Ctr + Z являются прямой командой для ввода цикла. Это заставило мою программу действовать непредсказуемо. На одной машине он бесконечно петляет, сам по себе он закрывает окно
Часть моей оценки, которая меня заводила с тех пор, как я начал ее. У многих моих сверстников также есть проблемы с этим, но это был прямой запрос о том, что это немедленный «провал», если он может разрушить нашу программу. Вот почему я хочу быть стойкими на позволяя лишь символы, определяемые ниже:
size_t found = user.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890");
В соответствии с просьбой также достаточно программы для репликации проблемы:
#include <iostream>
#include <sstream>
#include <vector>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <string>
#include <istream>
#include <cstddef>
string name = { "" };
int menu();
int errorChecking(string user);
int userName();
int main()
{
cout << "-------------------- Welcome! --------------------" << endl << endl;
userName();
}
int errorChecking(string user)
{
size_t found = user.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890");
if (found != string::npos)
{
cout << name[found] << " is not an acceptable character." << '\n';
cout << "Enter a valid name ";
cout << endl << endl;
userName();
}
return(0);
}
int userName()
{
cout << "Enter your name: ";
std::getline(cin, name);
//if (name == "→") { cin.clear(); userName(); }
errorChecking(name);
return(0);
}
'cin >>' не «бесконечно петля» - нет оператора цикла. Как выглядит остальная часть вашего кода - часть, содержащая цикл? –
Вы помните, чтобы [очистить] (http://en.cppreference.com/w/cpp/io/basic_ios/clear) статус потока? –
С cin, cout и string вы уже используете стандартные библиотеки. Сложно писать что-либо без стандартных библиотек, если вы сначала не перепишете кусок стандартных библиотек. – user4581301