我有一个设置unsigned int变量的简单程序。好吧,我有一个问题。 std::cout
工作正常,直到InputCLI
被调用。
第一次程序在调试器到达包含std::cout
std::cout << "debugNumber" << debugNumber;
InputCLI
调用程序仅在 \ n 打印行后,直到std::cin
运算符。怎么了?
我在Eclipse(Linux)中进行编码。执行std::cin >> wait;
之前的那一刻:
#include <iostream>
#include <limits>
unsigned int InputCLI(unsigned int& x);
int main() {
int wait;
unsigned int debugNumber = 0;
std::cout << "debugNumber " << debugNumber;
std::cout << "Enter debug number\n";
InputCLI(debugNumber);
std::cout << "debugNumber\n";
std::cout << "debugNumber " << debugNumber;
if (debugNumber == 6) {
std::cout << "bubu";
}
std::cin >> wait;
return 0;
}
unsigned int InputCLI(unsigned int& x) {
if (std::cin >> x, std::cin.fail()) {
if (std::cin.bad() || std::cin.eof())
return -1;
std::cin.clear();
std::cin.ignore(std::numeric_limits < std::streamsize > ::max(), '\n');
return -2;
}
return 0;
}
答案 0 :(得分:2)
如果我不添加\ n或std :: endl std :: cout会缓冲数据吗?
是的,确实。
std::flush
显式刷新流。 '\n'
本身不会在C ++级别进行任何刷新,但可能会触发较低级别的刷新。 std::endl
打印'\n'
,然后打std::flush
。
当然,如果没有这些,你实际上不能在std::cin
之前预期同花顺。