1. 程式人生 > >《用C++為名字裝輸出框》

《用C++為名字裝輸出框》

如何用更為生動的語言來問候,就像下面的輸入輸出一樣:

Please enter your first name: Bob

**************
*            *
* Hello,Bob! *
*            *
**************

我們的程式會產生五行輸出。

第一行是框架的開始。它是一個*字元組成的序列,它的長度是人的名字、問候語("Hello,")、兩端的空格和*所佔的字元的總長。

第二行由相應數目的空格和兩端的*組成。

第三行的結構是一個*、一個空格、問候語、一個空格和一個*。

最後兩行分別與第二行和第一行相同。

為了完成這樣的輸出,明智的實現策略是每次一行的進行輸出。

首先讀取名字,然後使用名字來組成問候語,接下來使用問候語來建立每行的輸出。

下面的程式就採用了這種策略來解決這個問題:

//ask for a person's name,and generate a framed greeting 
#include<iostream>
#include<string>
using namespace std;

int main()
{
	cout<<"Please enter your first name: ";
	string name;
	cin>>name;

	//build the message that we intend to write
	const string greeting="Helllo,"+name+"!";

	//build the second and fourth lines of the output
	const string spaces(greeting.size(),' ');
	const string second="* "+spaces+" *";

	//build the first and fifth of the output
	const string first(second.size(),'*');

	//write it all
	cout<<endl;
	cout<<first<<endl;
	cout<<second<<endl;
	cout<<"* "<<greeting<<" *"<<endl;
	cout<<second<<endl;
	cout<<first<<endl;
	
	return 0;
 } 

const(常量)可以作為變數定義的一部分。這麼做可以保證,在變數的生存期內,不會改變它的值。

在一個程式中,指出哪些變數不會改變,可以讓程式更容易理解。

如果說一個變數是常量(const),必須在定義的時候初始化,否則就再也沒有機會給它賦值了。

用來初始化const變數的值,可以不是常數(constant)。

通過使用圓括號,可以要求系統根據表示式來構造(construct)變數。

greeting.size()是一個呼叫成員函式(member function)的例子。

事實上,名叫greeting的物件含有一個成員叫size,它是一個函式,我們可以通過呼叫它獲得一個值。

' '是一個字元直接量

(character literal),值為空格。

字元直接量總是被單引號括住;而字串直接量總是被雙引號括住。

字元直接量的型別是內置於語言核心的char型別。

如果我們想要得到字元 ' 或者 \ ,我們必須在前面加上 \ 。