Answer:
#include <iostream> 
#include <string> 
#include <regex> 
using namespace std; 
 
int main() 
{ 
 cout << "Enter a 5-digit number: "; 
 string number; 
 cin >> number; 
 bool valid = regex_search(number, regex("^\\d{4}[02468]$")); 
 
 if (valid) { 
 valid = stoi(number.substr(0, 1)) + stoi(number.substr(1, 1)) 
 < stoi(number.substr(3, 1)) + stoi(number.substr(4, 1)); 
 } 
 cout << number << (valid ? " is valid" : " is invalid"); 
}
Step-by-step explanation:
Regular expressions can do all of your checking except for the sum of digits check. The checks are i.m.o. easiest if you don't treat the input as a number, but as a string with digits in it.
The regex means:
^ start of string
\d{4} exactly 4 digits
[02468] one of 0, 2, 4, 6 or 8 (this is what makes it even)
$ end of string