Я пытаюсь заверить, что моя строка ввода правильно сформирована (правильный формат XXX-X-XXX), но я не хочу использовать char temp [255] и cin. getline.Обеспечьте правильный ввод строки в C++
До сих пор мне удалось "поймать" всех исключений, кроме этого:
Введите регистрационный знак: shjkf 22h 23jfh3kfh jkfhsdj H2j H2K 123-A-456
Как предполагается regPlate выберет все строки из ввода, включая правильный, сформированный в конце, и он напечатает строку. Это неверно. После прочтения первой строки он должен печатать Bad input и все после его удаления.
Я пытался использовать cin.clear()
, cin.ignore()
и т. Д. в моем , если функция, но без результатов.
void main()
{
std::string regPlate;
do
{
cout << "Enter registration plate: ";
cin >> regPlate;
if (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9)
{
cout << "Bad entry" << endl;
}
} while (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9);
cout << endl << regPlate << endl;
system("pause");
}
Вам не нужно, чтобы проверить размер быть меньше, чем '9' * и * больше, чем' 9'. Просто выполните одну проверку размера, не равного '9'. –
Что касается вашей проблемы, возможно, вы ищете ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline)? –
@Someprogrammerdude ", но я не хочу использовать char temp [255] и cin.getline сочетание." –