我有下面的C++代碼在一個控制檯程序:意外的行爲使用時CIN兩次
float var1, var2;
cin >> var1;
cin >> var2;
當我即將進入第二個變量,並使用右箭頭鍵,第一個變量開始的輸入出現在屏幕上。如果我按下回車鍵,第二個變量將取出屏幕上顯示的值。我需要重置cin緩衝區嗎? 我試圖利用:
cin.clear();
和:
cin.ignore();
但行爲保持。
我有下面的C++代碼在一個控制檯程序:意外的行爲使用時CIN兩次
float var1, var2;
cin >> var1;
cin >> var2;
當我即將進入第二個變量,並使用右箭頭鍵,第一個變量開始的輸入出現在屏幕上。如果我按下回車鍵,第二個變量將取出屏幕上顯示的值。我需要重置cin緩衝區嗎? 我試圖利用:
cin.clear();
和:
cin.ignore();
但行爲保持。
無事可做。只要知道編譯器行爲。 cin
將佔用空格或下一行(\ n)分隔值。現在向上和向下箭頭向下瀏覽歷史記錄,以便在控制檯中獲得以前的輸入。您可以從命令提示符進行測試。
你是對的,所以這是一個功能可以這麼說,很高興知道,因爲它也許是有用的... – 2013-04-26 10:41:25
如果它真的有幫助請標記爲答案。 – pcbabu 2013-04-26 10:45:05
這與C++沒有任何關係。您遇到的是cmd.exe
的功能,其中使用右箭頭鍵獲取您以前輸入的行(字符爲字符)如果右箭頭按下作爲新行上的第一次擊鍵。
是嗎?那麼,只要它是定義的行爲,它並不重要...... – 2013-04-26 11:07:25
什麼操作系統? (換言之,「按下右箭頭時發送什麼字符序列」)。另外爲什麼是右箭頭? – trojanfoe 2013-04-26 10:02:06
我無法在Ubuntu/bash shell中重現此操作。我認爲這是OS /命令外殼特定的。 – 2013-04-26 10:02:46
我正在使用borland C++ 6.0並且程序在控制檯中運行 – 2013-04-26 10:08:43