1. 程式人生 > >32-C++基礎-混合輸入字串和數字

32-C++基礎-混合輸入字串和數字

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類。