2013-04-26 42 views
0

我有下面的C++代碼在一個控制檯程序:意外的行爲使用時CIN兩次

float var1, var2; 

cin >> var1; 
cin >> var2; 

當我即將進入第二個變量,並使用右箭頭鍵,第一個變量開始的輸入出現在屏幕上。如果我按下回車鍵,第二個變量將取出屏幕上顯示的值。我需要重置cin緩衝區嗎? 我試圖利用:

cin.clear(); 

和:

cin.ignore(); 

但行爲保持。

+1

什麼操作系統? (換言之,「按下右箭頭時發送什麼字符序列」)。另外爲什麼是右箭頭? – trojanfoe 2013-04-26 10:02:06

+0

我無法在Ubuntu/bash shell中重現此操作。我認爲這是OS /命令外殼特定的。 – 2013-04-26 10:02:46

+0

我正在使用borland C++ 6.0並且程序在控制檯中運行 – 2013-04-26 10:08:43

回答

0

無事可做。只要知道編譯器行爲。 cin將佔用空格或下一行(\ n)分隔值。現在向上和向下箭頭向下瀏覽歷史記錄,以便在控制檯中獲得以前的輸入。您可以從命令提示符進行測試。

+1

你是對的,所以這是一個功能可以這麼說,很高興知道,因爲它也許是有用的... – 2013-04-26 10:41:25

+0

如果它真的有幫助請標記爲答案。 – pcbabu 2013-04-26 10:45:05

2

這與C++沒有任何關係。您遇到的是cmd.exe的功能,其中使用右箭頭鍵獲取您以前輸入的行(字符爲字符)如果右箭頭按下作爲新行上的第一次擊鍵。

+0

是嗎?那麼,只要它是定義的行爲,它並不重要...... – 2013-04-26 11:07:25