岳岳 發問時間: 電腦與網際網路程式設計 · 1 0 年前

c++關於cin資料存取的問題

以cin方式來存放使用者輸入的資料時

他會不斷累積上去

比如說

char a[4];

cin>>a[0]>>a[1]>>a[2]>>a[3];

但如果使用者輸入abcde的話

狀態會變成a[0]=a ,a[1]=b, a[2]=c, a[3]=d,

然後e會被留在buffer裡

使用者再輸入fghi

(繼續上面的例子)

char b[4];

cin>>b[0]>>b[1]>>b[2]>>b[3];

狀態會變成b[0]=e ,b[1]=f, b[2]=g, b[3]=h,

跟我想要的b[0]=f ,b[1]=g, b[2]=h, b[3]=i,

不同

所以我想問如何把沒用到的cin資料清除掉

讓它不會影響到下次cin

已更新項目:

>>

就是向右的箭頭

不知怎地會便亂碼

>>

2 個已更新項目:

cin>>a[0]>>a[1]>>a[2]>>a[3];

cin>>b[0]>>b[1]>>b[2]>>b[3];

上面變亂碼

3 個已更新項目:

謝謝指教

此指令能夠解決所遇到的問題

感謝

2 個解答

評分
  • Lv 7
    1 0 年前
    最佳解答

    你可以用basic_istream裡的一個成員函式叫ignore().cin的型態是istream, 而istream繼承basic_istream. 所以basic_istream裡的ignore()可被basic_istream和istream的實體用.

    ignore()本身的意思是忽略或刪除的意思. 有兩個參數. 第1個是最多能刪除多少個字元. 第2個是刪除到什麼字元才能停. 這兩個只要一個成立ignore()就停止.例:

    cin.ignore(20, '\n'); //最多能刪除20個字元或刪除到'\n'字元才能停.

    如果暫時區中有"hello world\nhello"的話, 那cin.ignore(20, '\n');會刪除"hello world\n". cin.ignore(5, '\n'); 會刪除"hello"

    試試在cin之後加cin.ignore(80, '\n');看看

    請參考http://tw.knowledge.yahoo.com/question/question?qi...

    懂不懂? 不懂請再問

    2009-11-04 03:47:16 補充:

    解決就好啦...免客氣

    參考資料: Myself, 知識+, Myself
  • 1 0 年前

    最近在奇摩發問~

    不能用一些HTML用的特殊字元

    如 &amp & , &gt >

    有人反應這個問題嗎?

    這會降低回答意願~

還有問題?馬上發問,尋求解答。