1. 程式人生 > >關於C++的getline換行符的問題

關於C++的getline換行符的問題

例如

    string s;

    char a;

    cin>>a;

    cout << a << endl;

    getline(cin,s);

    cout << s;

當輸入num之後就直接輸出a的值了, 並不能輸入s

而當我們輸入aaa bbb的時候,輸出的結果是

a

aa bbb.

       這是因為stdin是緩衝式輸入,必須在輸入換行後才讀入num.但是它只把第一個字元讀出,並不處理輸入緩衝區中的換行符。然後getline遇到了換行符,輸入結束。

此外cin>>>>操作符會跳過所有的空白字元,然後輸入直到又遇到空白字元。

如果想要先輸入a,然後再讀入字串s,就要在在getline之前加一句:   cin.ignore(0x7fffffff,'\n')

       ignore的第一個引數不是忽略字元的個數,而是忽略字元的最大個數。如果一直沒有遇到第二個引數所指定的字元,它會忽略0x7fffffff個字元。給它一個較大的數可以保證無論當前行有多少個字元都會被忽略,從下一行開始輸入。