32-C++基礎-混合輸入字串和數字
阿新 • • 發佈:2018-12-24
4.2.5 混合輸入字串和數字
混合輸入數字和麵向行的字串會導致問題。請看程式4.6中的簡單程式。
清單4.6 numstr.cpp
//numstr.cpp——following number input with line input #include<iostream> int main() { using namespace std; cout<<"What year was your house built?\n"; int year; cin>>year; cout<<"What is its street address?\n"; char address[80]; cin.getline(address,80); cout<<"Year built: "<<year<<endl; cout<<"Address: "<<address<<endl; cout<<"Done!\n"; return 0; }
該程式的執行情況如下:
使用者根本沒有輸入地址的機會。問題在於,當cin讀取年份,將回車鍵生成的換行符留在了輸入佇列中。後面的cin.getline()看到換行符後,將認為是一個空行,並將一個空字串賦給address陣列。解決之道是,在讀取地址之前先讀取並丟棄換行符。這可以通過幾種方法來完成,其中包括使用沒有引數的get()和使用接受一個char引數的get(),如前面的例子所示,可以單獨進行呼叫:
cin>>year;
cin.get();
也可以利用表示式cin>>year返回cin物件,將呼叫拼接起來:
(cin>>year).get();
按上述任何一種方法修改程式 4.6後,它便可以正常工作:
C++程式常指標(而不是陣列)來處理字串。我們將在介紹指標後,再介紹字串這個方面的特性。下面介紹一種較新的處理字串的方式:C++string類。