Okay, so ist mein Problem, ich kann nicht finden oder denke an etwas, das in die While-Argument gehen wird, die alle drei Funktionen überprüft, um zu sehen, ob jeder falsch ist, bitte helfen! Das ist mein Problem!Wie würde ich die boolesche Variable in main überprüfen, damit meine Do-while-Schleife die drei Funktionen durchläuft?
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;
}
}
Hauptdatei
//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;
}
Ich habe versucht, und die Schleife denkt, dass das Passwort falsch ist –
Verwenden Sie einen Debugger, um durch Ihren Code zu gehen. Ich sehe mindestens einen Fehler in Ihrer checkUpper() -Methode. –
Ja der Debugger sagt \t "Validate :: checkUpper ': nicht alle Steuerpfade geben einen Wert zurück" –