當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;
}
請先 登入 以發表留言。