Итак, моя проблема заключается в том, что я не могу найти или подумать о чем-нибудь, что войдет в аргумент while, который проверит все три функции, чтобы убедиться, что каждый из них ложный, пожалуйста, помогите! Это моя проблема!Как я могу проверить логическую переменную в main, поэтому цикл do-while проходит через три функции?
class Validate
{
public:
Validate(string);
Validate();
bool checkLength();
bool checkSpaces();
bool checkUpper();
//bool checkUpper(char);
private:
string password;
static const int LEN = 5;
};
Validate::Validate()
{
}
Validate::Validate(string pass)
{
pass = password;
}
bool Validate:: checkLength()
{
if (password.length() < LEN)
{
cout << "Password is not 5 characters." << " please try again..." << endl;
return true;
}
else
return false;
}
bool Validate::checkSpaces()
{
if (password.find(' ') != string::npos)
{
cout << "Password can not have any spaces " << endl;
return true;
}
else
return false;
}
bool Validate::checkUpper()
{
for (int i = 0; i < password.length(); i++)
{
if (!isupper(password[i]))
{
cout << "Password must have at least one uppercase" << endl;
return true;
}
else
return false;
}
}
Основной файл
//DISPLAY 8.9 Using a Vector
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#include "c:\Users\barta\OneDrive\Documents\Visual Studio 2015\Projects\Project 7\Project 7\Validate.h"
int main()
{
vector<string> data;
string firstName, lastName, login, userName, password;
Validate c;
bool check;
firstName = "1";
cout << "Enter your first name.\n";
getline(cin, firstName);
while (firstName != "0")
{
cout << "Enter your last name.\n";
getline(cin, lastName);
do
{
cout << "Enter a password.\n";
getline(cin, password);
//password = c.checkLength();
//password = c.checkSpaces();
c.checkUpper();
} while (false);
lastName = lastName.substr(0, 5);
userName = firstName.at(0) + lastName;
login = userName + ", " + password;
data.push_back(login);
cout << "Enter your first name.\n";
getline(cin, firstName);
}
cout << " Login data entered \n" << endl;
for (unsigned int i = 0; i < data.size(); i++)
{
cout << " " << data.at(i) << endl;
}
system("pause");
return 0;
}
Я пробовал это, и петля думает, что пароль неверен –
Используйте отладчик, чтобы выполнить свой код. Я вижу хотя бы одну ошибку в вашем методе checkUpper(). –
Да, отладчик говорит \t «Validate :: checkUpper»: не все пути управления возвращают значение « –