[英]Strange behaviour of std::cout after function call
我有一個簡單的程序,設置unsigned int變量。 好吧,我有一個問題。 std::cout
工作正常,直到InputCLI
。
當調試器到達包含std::cout
行時,第一次打印行
std::cout << "debugNumber" << debugNumber;
在InputCLI
調用程序打印行僅用\\ n直到它到達std::cin
運算符。 怎么了?
我在Eclipse(Linux)中編碼。 std::cin >> wait;
之前的那一刻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;
}
如果我不添加\\ n或std :: endl std :: cout將緩沖數據?
對,就是這樣。
std::flush
顯式刷新流。 '\\n'
本身不會在C ++級別進行任何刷新,但可能會觸發較低級別的刷新。 std::endl
打印'\\n'
然后執行std::flush
。
當然,沒有任何這些,你實際上不能期望在你的std::cin
之前刷新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.