我不知道为什么在用户输入-1时do-while循环没有终止。只需忽略内部while循环之后的所有内容即可。我知道问题出在while循环中。我只是看不到。
int main()
{
srand(time(0));
int input;
std::string pass, company, timeS;
do
{
std::cout << "Enter password length: ";
std::cin >> input;
while(input < 8 || input > 16)
{
if(!std::cin)
{
std::cin.clear();
std::cin.ignore(100, '\n');
}
std::cout << "Password length must be between 8 and 16.\nEnter password length: ";
std::cin >> input;
}
std::cout << "Enter company name: ";
std::getline(std::cin, company);
pass = passGen(input);
time_t now = time(0);
auto time = *std::localtime(&now);
std::stringstream ss;
ss << std::put_time(&time, "%Y %b %d %H:%M:%S %a");
timeS = ss.str();
std::cout << "You passoword: " << pass << std::endl;
writeFile(pass, company, timeS);
}while(input != -1);
return 0;
}
谢谢!
答案 0 :(得分:0)
内部的while循环永远不会终止,因为条件对于.toggleClass('cards')
始终为true。
$('#btToggleDisplay').on('click', function () {
$("#itineraryTable").toggleClass('cards')
$("#itineraryTable thead").toggle()
})
答案 1 :(得分:0)
在此循环中,您等待8到16之间的数字。
while(input < 8 || input > 16)
{
if(!std::cin)
{
std::cin.clear();
std::cin.ignore(100, '\n');
}
std::cout << "Password length must be between 8 and 16.\nEnter password length: ";
std::cin >> input;
}
猜猜,那个循环永远不会出现什么?是的,-1
! =)
答案 2 :(得分:0)
希望这会回答您的问题:
int main()
{
srand(time(0));
int input;
std::string pass, company, timeS;
// do
// {
while(true){
std::cout << "Enter password length: ";
std::cin >> input;
if(input == -1){
break;
}
while(input < 8 || input > 16)
{
if(!std::cin)
{
std::cin.clear();
std::cin.ignore(100, '\n');
}
std::cout<< "=====>>>" << std::endl;
std::cout << "Password length must be between 8 and 16.\nEnter password length: ";
std::cin >> input;
}
std::cout << "Enter company name: ";
std::getline(std::cin, company);
pass = passGen(input);
time_t now = time(0);
auto time = *std::localtime(&now);
std::stringstream ss;
ss << std::put_time(&time, "%Y %b %d %H:%M:%S %a");
timeS = ss.str();
std::cout << "You passoword: " << pass << std::endl;
writeFile(pass, company, timeS);
}
// }while(input != -1);
return 0;
}
只需使用
while(true){
//getting length of password
if(input == -1){
break;
}
//rest of the logic
}
答案 3 :(得分:0)
只需忽略内部while循环之后的所有内容。
好的。我们来做...
int main()
{
int input;
do
{
std::cout << "Enter password length: ";
std::cin >> input;
while(input < 8 || input > 16)
{
std::cin >> input;
}
}while(input != -1);
return 0;
}
我知道问题出在while循环中。我只是看不到。
希望您现在能看到它。您的内心同时确保input
永远不会-1
。
我认为您当前的问题是未构造代码的症状。因此,为了修复您的代码,我建议使用函数:
void do_something(int input);
bool read_and_validate(int& input) {
input = 0;
while(input < 8 || input > 16) {
std::cin >> input;
if (input == -1) return false;
}
return true;
}
int main() {
int input;
while( read_and_validate(input) ) {
do_something(input);
}
}