【发布时间】:2014-10-22 12:47:16
【问题描述】:
int main(int argc, const char * argv[])
{
std::cout << "How many turns do you want to do?" << std::endl << std::endl;
std::string turnsDefined;
std::cin >> turnsDefined;
std::cout << turnsDefined;
bool hasPassed = false;
int objectSize;
for(char c : turnsDefined){
objectSize++;
}
std::cout << objectSize;
while(hasPassed != true){
for(char c : turnsDefined){
if(isdigit(c) != true){
hasPassed = false;
break;
}
}
}
std::cout << "Successfully passed all if conditions.";
return 0;
}
所以,这个短程序所做的就是获取用户输入,测试它是否包含任何字母,然后将 bool 设置为 false 或 true(我知道那部分不起作用,但是这不是我要的)。我的问题是:一旦我输入了某些内容,我希望它会立即返回 (std::cin >> turnsDefined; "NEWLINE" std::cout << turnsDefined;) 但是,它只是暂停而不返回任何内容。
【问题讨论】:
-
你还没有初始化
objectSize。 -
您从未将
hasPassed设置为true,因此您的while 循环不会退出。由于您不刷新 cout(只需给它一个换行符,或std::endl),它可能不会显示任何内容。 -
@icabod 我很清楚我从未将 hasPassed 设置为 true。但它不应该改变任何东西,因为循环是在代码之后进入的。
-
提示:
std::cout << turnsDefined;之外的所有内容都与您的问题无关。即使您在此之后while ( true );也不会发生输出。这可能是您自己应该尝试的第一件事。你的问题可以用 8 行代码和一句话来完成。此外,因此您错过了 icabod 的(正确)答案的重点。 -
for(char c : turnsDefined){ objectSize++; }int objectSize = turnDefined.size();呢? :)