7.7 函数和string对象
虽然C-风格字符串和string对象的用途几乎相同,但与数组相比,string对象与结构的更相似。例如,可以将一个结构赋给另一个结构,也可以将一个对象赋给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。如果需要多个字符串,可以声明一个string对象数组,而不是二维char数组。
程序清单7.14提供了一个小型示例,它声明了一个string对象数组,并将该数组传递给一个函数以显示其内容。
程序清单7.14 topfive.cpp
// topfive.cpp -- 处理一个字符串对象数组 #include <iostream> #include <string> using namespace std; const int SIZE = 5; void display(const string sa[], int n); int main() { string list[SIZE]; // 包含5个字符串对象的数组 cout << "Enter your " << SIZE << " favorite astronomical sights:\n"; for (int i = 0; i < SIZE; i++) { cout << i + 1 << ": "; getline(cin,list[i]); } cout << "Your list:\n"; display(list, SIZE); cin.get(); return 0; } void display(const string sa[], int n) { for (int i = 0; i < n; i++) cout << i + 1 << ": " << sa[i] << endl; }
下面是该程序的运行情况:
Enter your 5 favorite astronomical sights: 1:Orion Nebula 2:M13 3:Saturn 4:Jupiter 5:Moon Your list: 1:Orion Nebula 2:M13 3:Saturn 4:Jupiter 5:Moon
对于该示例,需要指出的一点是,除函数getline()外,该程序像对待内置类型(如int)一样对待string对象。如果需要string数组,只需使用通常的数组声明格式即可:
string list[SIZE];
这样,数组list的每个元素都是一个string对象,可以像下面这样使用它:
getline(cin,list[i]);
同样,形参sa是—个指向string对象的指针,因此sa[i]是一个string对象,可以像下面这样使用它:
cout<< i + 1 << “: ” << sa[i] << endl;文件下载(已下载 546 次)
发布时间:2014/6/17 下午1:42:37 阅读次数:3530