當string 類別物件第一次以cin>>輸入字串結束時,會在串流buffer區內滯留字串結束字元'\0',且不會自動移除捨去,當第二次使用getline(cin,st)函式讀取字串時,該滯留字串結束字元'\0'將自動被第二次getline(cin,st)函式接收,故須在第二次執行getline(cin,st)函式之前,使用get()函式先行吸收字串結束字元'\0',以避免第二次使用getline(cin,st)函式時的誤輸入.

int main(void)
{
   string st;
   cout<<"enter string : ";
   cin>>st;
   cout<<"st1 = "<<st<<endl;
   cout<<"st[0] = "<<st[0]<<endl;
   cout<<"st[1] = "<<st[1]<<endl;
   cout<<"st[2] = "<<st[2]<<endl;
   cout<<"st[3] = "<<st[3]<<endl<<endl;
   
   cout<<"st[0] = "<<(int)st[0]<<endl;
   cout<<"st[1] = "<<(int)st[1]<<endl;
   cout<<"st[2] = "<<(int)st[2]<<endl;
   cout<<"st[3] = "<<(int)st[3]<<endl;
   

  cin.get();
  
   cout<<"enter string : ";
   getline(cin,st);
   cout<<"st2 = "<<st<<endl;
   cout<<"st[0] = "<<(int)st[0]<<endl;
   cout<<"st[1] = "<<(int)st[1]<<endl;
   cout<<"st[2] = "<<(int)st[2]<<endl;
   cout<<"st[3] = "<<(int)st[3]<<endl;
   cout<<"st[4] = "<<(int)st[4]<<endl;
   cout<<"st[5] = "<<(int)st[5]<<endl;
   cout<<"st[6] = "<<(int)st[6]<<endl;
   cout<<"st[7] = "<<(int)st[7]<<endl<<endl;
}

創作者介紹
創作者 minsin的部落格 的頭像
minsin

minsin的部落格

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