Так что я хочу, чтобы проверить, что пользователь вводит только текст, а не цифры. Если какое-либо число вводится, я снова спрашиваю ее для ввода. Я думал, что это будет делать трюк, но это не похоже на работу:Проверка функции ввода и getline()
#include <iostream>
using namespace std;
int main()
{
string name = "";
cout << "Enter name: ";
getline(cin, name);
while (!cin) // or cin.fail()
{
cout << "Numbers are not allowed, input name again: ";
cin.clear();
cin.ignore(1000, '\n'); // is this even necessary since getline() already consumes spaces and new lines?
getline(cin, name);
}
}
Поскольку переменная name
имеет string
типа, а не если cin
объект не в состоянии, когда он получает номер? Как я могу проверить его и убедиться, что он запрашивает ввод снова при вводе номера? Кроме того, из любопытства, поскольку я уже спрашиваю, если пользователь вводит что-то вроде: Scarlett9356, что было бы хорошим способом повторного запроса на хороший ввод? Спасибо.
вы можете читать «1234» из входного потока в виде числа или строки: это всего лишь строка символов – BeyelerStudios
Настоящая сложная вещь - это большая картина. Что * * действительное имя для человека? Это намного сложнее, чем можно было бы подумать: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/. Конечно, для игрушечной программы обычно достаточно убедиться, что это содержит только Aa-Zz и пробелы. –
Отлично, спасибо за обмен! @ChristianHackl – Blueshift