close

若第二次的cin.get()或cin.getline()擷取函式 , 其停止擷取字元非空白鍵(space) , tab與enter鍵 ,

第一次cin>>擷取遇到空白鍵(space) , tab與enter鍵 , 則將其滯留在buffer內 ,並提供給第二次的cin.get()或cin.getline()擷取函式

擷取.

int main(void)
{
    char ch=' ';
    char array1[20];
    char array2[20];
    cout<<"    ch = "<<ch<<endl;
    cout<<"array1 = "<<array1<<endl;
    cout<<"array2 = "<<array2<<endl;
       
    cin>>ch;
    cin.get(array1,20,'f');
    cin.get(array2,20,'g');
    cout<<"       ch = "<<ch<<endl<<endl;
    
    cout<<"array1[0] = "<<(int)array1[0]<<endl;
    cout<<"array1[1] = "<<(int)array1[1]<<endl;
    cout<<"array1[2] = "<<(int)array1[2]<<endl;
    cout<<"array1[3] = "<<(int)array1[3]<<endl<<endl;
    
    cout<<"array2[0] = "<<(int)array2[0]<<endl;
    cout<<"array2[1] = "<<(int)array2[1]<<endl;
    cout<<"array2[2] = "<<(int)array2[2]<<endl;
    cout<<"array2[3] = "<<(int)array2[3]<<endl;
system("pause");
return 0;

例如輸入

a(enter鍵)

f(enter鍵)

g(enter鍵)

ch=a

(int)array1[0] =10  //cin>>遇到預設的停止擷取字元enter鍵,則表示輸入完畢,並將enter字元滯留於buffer,以供下一個cin.get()擷取.

(int)array1[1] =0   //字串結束字元'\0'

     array2[0] =f   //cin.get(array1,20,'f')遇到設定的停止擷取字元'f',則表示輸入完畢,並將f與接在後面的enter字元滯留於    

                       buffer,以供下一個cin.get(array2,20,'g')擷取.

(int)array2[1] =10  //執行cin.get(array1,20,'f')後的enter鍵,與f字符一起被cin.get(array2,20,'g')擷取.
若將第一次輸入的a(enter鍵)改為a(space)(space).....(enter鍵),或a(tab)(tab).....(enter鍵)則space與tab同樣被視為
預設的停止擷取字元,則表示輸入完畢,並將space,tab與enter字元滯留於buffer,以供下一個cin.get(array1,20,'f')擷取.則
(int)array1[0] =32 (space的ascii)  或(int)array1[0] =9 (tab的ascii)
(int)array1[1] =32 (space的ascii)  或(int)array1[0] =9 (tab的ascii)
 .
 .
(int)array1[1] =32 (space的ascii)  或(int)array1[0] =9 (tab的ascii)
(int)array1[n] =10
arrow
arrow
    全站熱搜

    minsin 發表在 痞客邦 留言(0) 人氣()