Loops c+中的奇怪循环逻辑+; std::cout turnsDefined; 标准::cout

Loops c+中的奇怪循环逻辑+; std::cout turnsDefined; 标准::cout,loops,c++11,logic,Loops,C++11,Logic,我想做的是: 我正在获取输入并测试它是否只包含数字。如果是 是的,它只是传递循环(设置w循环的变量) 正在检查是否为true)。如果输入不包含字符而不是 数字,它请求另一个输入并警告用户 跳过调试部分,我建议您应该: 我想做的是: 我正在获取输入并测试它是否只包含数字。如果是 是的,它只是传递循环(设置w循环的变量) 正在检查是否为true)。如果输入不包含字符而不是 数字,它请求另一个输入并警告用户 跳过调试部分,我建议您应该: 在代码中,初始化“boolForCharIsDigi”的for循

我想做的是: 我正在获取输入并测试它是否只包含数字。如果是 是的,它只是传递循环(设置w循环的变量) 正在检查是否为true)。如果输入不包含字符而不是 数字,它请求另一个输入并警告用户

跳过调试部分,我建议您应该:

我想做的是: 我正在获取输入并测试它是否只包含数字。如果是 是的,它只是传递循环(设置w循环的变量) 正在检查是否为true)。如果输入不包含字符而不是 数字,它请求另一个输入并警告用户

跳过调试部分,我建议您应该:


在代码中,初始化“boolForCharIsDigi”的for循环从不更新实际数组:

if( std::all_of( turnsDefined.begin(), turnsDefined.end(), ::isdigit ) )
{
   // Correct input 
}

else
{
  // Warn the user, re-enter stuff   
}
问题在于_b是一个临时变量。您需要将其作为参考,如下所示:

for(bool _b : boolForCharIsDigi){
    _b = false;
}

可能还有其他问题,但这一个突然出现在我的眼前……-)

在代码中,初始化“boolForCharIsDigi”的for循环从不更新实际数组:

if( std::all_of( turnsDefined.begin(), turnsDefined.end(), ::isdigit ) )
{
   // Correct input 
}

else
{
  // Warn the user, re-enter stuff   
}
问题在于_b是一个临时变量。您需要将其作为参考,如下所示:

for(bool _b : boolForCharIsDigi){
    _b = false;
}

可能还有其他问题,但这一个突然出现在我的眼前……-)

您是否尝试调试它以检查问题?如果您尝试一步一步地调试,您可以很容易地找到问题的原因。
while(hasPassed!=true)
让我畏缩。@Jepessen我就是这么做的。但是没有帮助,因为我根本无法理解逻辑。这真的很奇怪…@Fredrarson我会改变它的。但是请不要只是为了说这句话而发表评论。您是否尝试调试它以检查问题?如果您尝试一步一步地调试,您可以很容易地找到问题的原因。
while(hasPassed!=true)
让我畏缩。@Jepessen我就是这么做的。但是没有帮助,因为我根本无法理解逻辑。这真的很奇怪…@Fredrarson我会改变它的。但请不要只是为了说这句话而发表评论。我真的很感谢你(有效)的回答。然而,我也想找出我在我的原始代码中做错了什么。我真的很感谢你(工作)的回答。然而,我也想找出我在原始代码中做错了什么。