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

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号