正文

for循环、字符串与数组(5)

通过游戏编程实战教新手学C++编程 作者:(美)Michael Dawson


3.3  使用string对象

无论是编写完整的字谜游戏还是简单地存储玩家名字,第1章简单介绍过的string对象都非常适合于处理这样的字符序列。string实际上是对象,它提供的成员函数允许用string对象完成一系列任务,从简单地获取对象长度到复杂的字符替换等等。另外,string的定义方式使它可以直观地与已知的一些运算符一起使用。

3.3.1  String Tester程序简介

String Tester程序使用了一个等于"Game Over!!!"的字符串,并报告它的长度、每个字符的索引(位置序号)以及是否存在特定的子字符串。另外,程序还将该string对象的部分内容擦除。该程序的运行结果如图3-3所示。

图3-3  通过常见的运算符和string成员函数可以对string对象进行组合、修改和擦除操作

从Course Technology网站(www.courseptr.com/downloads)或本书合作网站(http://www. tupwk.com.cn/downpage)上可以下载到该程序的代码。程序位于Chapter 3文件夹中,文件名为string_tester.cpp。

// String Tester

// Demonstrates string objects

#include <iostream>

#include <string>

using namespace std;

int main()

{

string word1 = "Game";

string word2("Over");

string word3(3, '!');

string phrase = word1 + " " + word2 + word3;

cout << "The phrase is: " << phrase << "\n\n";

cout << "The phrase has " << phrase.size() << " characters in it.\n\n";

cout << "The character at position 0 is: " << phrase[0] << "\n\n";

cout << "Changing the character at position 0.\n";

phrase[0] = 'L';

cout << "The phrase is now: " << phrase << "\n\n";

for (unsigned int i = 0; i < phrase.size(); ++i)

{

cout << "Character at position " << i << " is: " << phrase[i] << endl;

}

cout << "\nThe sequence 'Over' begins at location ";

cout << phrase.find("Over") << endl;

if (phrase.find("eggplant") == string::npos)

{

cout << "'eggplant' is not in the phrase.\n\n";

}

phrase.erase(4, 5);

cout << "The phrase is now: " << phrase << endl;

phrase.erase(4);

cout << "The phrase is now: " << phrase << endl;

phrase.erase();

cout << "The phrase is now: " << phrase << endl;

if (phrase.empty())

{

cout << "\nThe phrase is no more.\n";

}

return 0;

}


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号