How to Validate User Input in C++
Last Updated :
27 May, 2024
Validating the user input is very important for any program to ensure that the data being processed is correct and meaningful. In C++, various techniques can be used to validate the user input and in this article, we will learn how to validate the user input in C++.
Validate User Input in C++
To validate user input in C++, we can use the following methods:
1. Basic Data Type Validation
One of the most common forms of input validation is to ensure that the type of data provided by the user is valid or not. The std::cin object can be used to check the data type of the input. The following program illustrates the use of std::cin to validate the data type of the input:
C++ Program to validate the data type of the input
C++
//C++ Program to validate the data type of the input
#include <iostream>
#include <limits>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
while (!(cin >> number)) {
cout << "Invalid input. Please enter an integer: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "You entered: " << number << endl;
return 0;
}
Output
Enter an integer: abcd
Invalid input. Please enter an integer: 1234
You entered: 1234
2. Range Validation
After ensuring the input is of the correct data type, we can use simple comparison operators to check if the input falls within a valid range or not. The following program illustrates how we can perform range validation for inputs in C++:
C++ Program to validate the range of the input
C++
// C++ Program to validate the range of the input
#include <iostream>
#include <limits>
using namespace std;
int main() {
int age;
cout << "Enter your age (1-120): ";
while (!(cin >> age) || age < 1 || age > 120) {
cout << "Invalid input. Please enter an age between 0 and 120: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "You entered: " << age << endl;
return 0;
}
Output
Enter your age (0-120): 150
Invalid input. Please enter an age between 0 and 120: 25
You entered: 25
3. Validating String Formats
To validate the format of a string, for example checking if a string is a valid email address or not we can use the regular expressions also known as regex in C++. The following program illustrates how we can validate string formats using regex in C++:
C++ Program to Validate String Format for emails using regular expressions
C++
// C++ Program to Validate String Format for emails using regular expressions
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
string email;
regex email_pattern(R"((\w+)(\.{1}\w+)*@(\w+)(\.{1}\w+)+)");
cout << "Enter an email address: ";
getline(cin, email);
if (!regex_match(email, email_pattern)) {
cerr << "Invalid email format." << endl;
} else {
cout << "Valid email: " << email << endl;
}
return 0;
}
Output
Enter an email address: abcdatgmaildotcom
Invalid email format.
Enter an email address: [email protected]
Valid email: [email protected]
4. Custom Validations
For more specific validation needs, custom logic can be implemented by the users. Let us consider the following example, where we will validate a password that must contain a mix of characters.
C++ Program for Custom Validations
C++
// C++ Program for Custom Validations
#include <iostream>
#include <string>
using namespace std;
bool isValidPassword(const string& password) {
if (password.length() < 8) return false;
bool hasLower = false, hasUpper = false, hasDigit = false;
for (char ch : password) {
if (islower(ch)) hasLower = true;
if (isupper(ch)) hasUpper = true;
if (isdigit(ch)) hasDigit = true;
}
return hasLower && hasUpper && hasDigit;
}
int main() {
string password;
cout << "Enter a password (at least 8 characters, including uppercase, lowercase, and a digit): ";
cin >> password;
while (!isValidPassword(password)) {
cout << "Invalid password. Please enter a valid password: ";
cin >> password;
}
cout << "You entered a valid password." << endl;
return 0;
}
Output
Enter a password (at least 8 characters, including uppercase, lowercase, and a digit): passwrd
Invalid password. Please enter a valid password: Password@123
You entered a valid password.
Time Complexity: O(N), where N is the length of the input.
Auxiliary Space: O(1), as no extra space is used for validation.
Similar Reads
How to Take Operator as Input in C++?
Operators are symbols that specify some kind of operation. In C++, we sometimes need to take operators as user input mainly to perform mathematical operations. In this article, we will learn how to take operators as user input in C++. Operators as Input in C++To take operators (like +,-,*,/ etc) as
2 min read
How to Read a Line of Input Text in C++?
In C++, we often need to take input from the user by reading an input text line by line but the cin method only takes input till whilespace. In this article, we will look at how to read a full line of input in C++. For Example, Input: This is a text.Output: Entered Text: This is a text.Taking a Line
2 min read
How to Read Input Until EOF in C++?
In C++, EOF stands for End Of File, and reading till EOF (end of file) means reading input until it reaches the end i.e. end of file. In this article, we will discuss how to read the input till the EOF in C++. Read File Till EOF in C++The getline() function can be used to read a line in C++. We can
2 min read
How to Take Long String Input With Spaces in C++?
In C++, we often take long strings with a lot of characters as inputs with spaces but if we use cin then our input gets terminated as soon as whitespace is encountered. In this article, we will discuss how to take long strings with spaces as input in C++. Take Long String Input With Spaces in C++To
1 min read
How to Take Multiple Input from User in C++?
In C++, we use cin when we want to take input from the user. We often also need to take more than one input at a time. In this article, we will learn how to take multiple inputs in C++. Take Multiple Inputs from a User in C++To take multiple inputs from users, we can repeatedly use the std::cin usin
2 min read
How to Take Multiple Line String Input in C++?
In C++, taking string input is a common practice but the cin is only able to read the input text till whitespace. In this article, we will discuss how to read the multiple line of text input in C++. For Example, Input:Enter Your Text: This is amultiline text.Output:You Have Entered:This is amultilin
2 min read
How to Use stringstream for Input With Spaces in C++?
In C++, the std::stringstream class is a stream class to operate on strings and is very useful when we want to operate on a string as if it were a stream (like cin or cout). In this article, we will learn how to use string streams for input with spaces in C++. Example: Input: string = âHello, World!
2 min read
How to Use the ignore() Function in C++?
In C++, the ignore() function is a part of std::basic_istream that is used to discard the characters in the stream until the given delimiter(including it) is reached and then extracts the left-out remainder. In this article, we will learn how to use the ignore() function in C++. C++ ignore() Functio
2 min read
How to use errno in C++?
In C++ errno is a preprocessor macro that is used for error indication and reporting errors that occur during a function call. It contains error codes so if a call to a function fails somehow then the errno is set to a value that corresponds to the error. errno is defined in the header file <cerr
4 min read
How to input a comma separated string in C++?
Given an input string which is comma-separated instead of space, the task is to parse this input string in C++.First, let us understand what difference does it create if the input string is comma-separated. Taking input a whitespace-separated stringTaking input a whitespace-separated string in C++ i
2 min read