C++ 无法退出do while循环?
我不明白为什么用户在输入中输入-1时do while循环没有终止。只需忽略内部while循环之后的所有内容。我知道问题在while循环中的某个地方。我就是看不出来C++ 无法退出do while循环?,c++,C++,我不明白为什么用户在输入中输入-1时do while循环没有终止。只需忽略内部while循环之后的所有内容。我知道问题在while循环中的某个地方。我就是看不出来 int main() { srand(time(0)); int input; std::string pass, company, timeS; do { std::cout << "Enter password length: "; std::ci
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;
}
intmain()
{
srand(时间(0));
int输入;
标准::字符串传递、公司、时间;
做
{
std::cout>输入;
while(输入<8 | |输入>16)
{
如果(!std::cin)
{
std::cin.clear();
标准::cin.ignore(100,“\n”);
}
std::cout>输入;
}
std::cout内部while循环永远不会终止,因为对于-1
,条件始终为真
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>=0)|| 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;
}
if (input>0){
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;
}
intmain()
{
srand(时间(0));
int输入;
标准::字符串传递、公司、时间;
做
{
std::cout>输入;
while((输入<8&&input>=0)| |输入>16)
{
如果(!std::cin)
{
std::cin.clear();
标准::cin.ignore(100,“\n”);
}
std::cout>输入;
}
如果(输入>0){
std::cout内部while循环永远不会终止,因为对于-1
,条件始终为真
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>=0)|| 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;
}
if (input>0){
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;
}
intmain()
{
srand(时间(0));
int输入;
标准::字符串传递、公司、时间;
做
{
std::cout>输入;
while((输入<8&&input>=0)| |输入>16)
{
if(!std::cin)
{
std::cin.clear();
标准::cin.ignore(100,“\n”);
}
std::cout>输入;
}
如果(输入>0){
std::cout在此循环中,您等待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;
}
while(输入<8 | |输入>16)
{
如果(!std::cin)
{
std::cin.clear();
标准::cin.ignore(100,“\n”);
}
std::cout>输入;
}
猜猜看,什么东西从循环中永远不会出来?对,-1
!!=)在这个循环中,您等待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;
}
while(输入<8 | |输入>16)
{
如果(!std::cin)
{
std::cin.clear();
标准::cin.ignore(100,“\n”);
}
std::cout>输入;
}
猜猜,什么东西从循环中永远不会出来?对,-1
!!=)希望这能回答你的问题:
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;
}
希望这能回答你的问题:
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循环之后的所有内容
好的,让我们这样做吧
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循环之后的所有内容
好的,让我们这样做吧
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;
}
您请求在范围[8,16]
中输入。当它到达外部循环的末尾时,它将永远不会是-1
。另一个问题是如果std::cin.clear();
在std::cin>>输入之后没有运行;
?什么是std::getline(std::cin,company)
视为第一个字符?您要求输入范围[8,16]
。当它到达外部循环的末尾时,它将永远不会是-1
。另一个问题是如果std::cin.clear();
在std::cin>>输入之后不运行;
?什么是std::getline(std::cin,company)
请参见第1个字符?请添加完整的示例以完成答案这是do-while实现。尽管这可以使用just-while循环和if条件轻松编写。请添加完整的示例以完成答案这是do-while实现。尽管这可以使用只需一段时间循环和if条件。