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(我知道那部分赢了&# 39;工作,但那不是我要求的)。我的问题是:一旦我输入了某些内容,我希望它能够立即返回(std::cin >> turnsDefined; "NEWLINE" std::cout << turnsDefined;
)但是,它只是暂停而不返回任何内容。
答案 0 :(得分:3)
您没有获得任何输出的原因是stdout
(默认情况下由cout
使用)没有被刷新。 stdout
流被缓冲,并且此缓冲区仅在某些情况下刷新:到达换行符,指示刷新(例如使用cout.flush()
)或退出进程时。
在您的代码中,您没有输出任何换行符,您不是手动刷新缓冲区,并且(因为hasPassed
永远不会设置为true
,导致无限循环)您是永远不会退出这个过程。由于这些原因,stdout
永远不会被刷新,因此任何输出都不会显示在显示屏上。