cin.getline(array,n)僅會捨棄停止擷取字元,不會捨棄enetr鍵'\n'或空白鍵,除非以enetr鍵'\n'或空白鍵作為停止擷取字元.

範例一:cin.getline(array,10);輸入abc 按enter鍵三次.

第一次enter鍵預設停止擷取字元'\n'被捨去,第二次enter鍵則給cin.get(ch1);接收,第三次enter鍵則給 cin.get(ch2);接收.

(若為cin.get(array,10);輸入abc後僅須按二次enter鍵,(第一次enter鍵不被捨去,給cin.get(ch1);接收,
第二次enter鍵則給cin.get(ch2);接收.)

輸出:

array[0] =a

array[1] =b
array[2] =c
array[3] =      (字串結束字元'\0'空字符)
(int)array[3] =0(字串結束字元'\0'10進制值)
     ch1=       (第二次enter鍵空字元)

(int)ch1=10     (第二次enter鍵10進制值)

     ch2=       (第三次enter鍵空字元)

(int)ch2=10     (第三次enter鍵10進制值)

int main()
{
    char ch1,ch2,array[10];
    cin.getline(array,10);
    cin.get(ch1);
    cin.get(ch2);

    cout<<"array[0] = "<<array[0]<<endl;
    cout<<"array[1] = "<<array[1]<<endl;
    cout<<"array[2] = "<<array[2]<<endl;
    
    cout<<"array[3] = "<<array[3]<<endl;
    cout<<"(int)array[3] = "<<(int)array[3]<<endl;
    
    cout<<"array[4] = "<<array[4]<<endl;
    cout<<"(int)array[4] = "<<(int)array[4]<<endl;
    
    cout<<"array[5] = "<<array[5]<<endl;
    cout<<"(int)array[5] = "<<(int)array[5]<<endl;

 

    cout<<"     ch1 = "<<ch1<<endl;
          cout<<"(int)ch1 = "<<(int)ch1<<endl;

    cout<<"     ch2 = "<<ch2<<endl;
          cout<<"(int)ch2 = "<<(int)ch2<<endl;

範例二:cin.geline(array,10,'p')輸入abcp 按enter兩次.

停止擷取字元'p'被捨去,第一次enter鍵則給cin.get(ch1);接收,第二次enter鍵則給 cin.get(ch2);接收.

(若為cin.get(array,10,'p');輸入abcp 按enter一次.

停止擷取字元p沒被丟棄,而滯留在buffer內,被第二次cin.get(ch1);函式擷取輸入到ch1

enter鍵字元被第三次cin.get(ch2);函式擷取輸入到ch2

輸出:

array[0] =a

array[1] =b
array[2] =c
array[3] =      (字串結束字元'\0'空字符)
(int)array[3] =0(字串結束字元'\0'10進制整數值0)
ch1=     (第一次按enter鍵空字元)

ch1=10   (第一次按enter鍵空字元10進制值10)

ch2=     (第二次按enter鍵空字元)

ch2=10   (第二次按enter鍵空字元10進制值10)

int main()
{
    char ch1,ch2,array[10];
    cin.getline(array,10,'p');
    cin.get(ch1);
    cin.get(ch2);
    cout<<"array[0] = "<<(int)array[0]<<endl;
    cout<<"array[1] = "<<(int)array[1]<<endl;
    cout<<"array[2] = "<<(int)array[2]<<endl;
    cout<<"array[3] = "<<(int)array[3]<<endl;
    cout<<"array[4] = "<<(int)array[4]<<endl;
    cout<<"array[5] = "<<(int)array[5]<<endl;
    cout<<"ch1 = "<<     ch1<<endl;
    cout<<"ch1 = "<<(int)ch1<<endl;
    cout<<"ch2 = "<<     ch2<<endl;
    cout<<"ch2 = "<<(int)ch2<<endl;
system("pause");
return 0;

 

arrow
arrow
    全站熱搜

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