设为首页 加入收藏

TOP

8.8.1 创建字符串对象
2013-10-07 12:37:52 来源: 作者: 【 】 浏览:62
Tags:8.8.1 创建 字符串 对象

8.8.1  创建字符串对象

字符串对象的创建非常容易,不过具体如何创建有不少选择。首先,可以像下面这样创建并初始化一个字符串对象:

  1. string sentence = "This sentence is false."

sentence对象将用赋值运算符右边的字符串字面值来初始化。由于字符串对象末尾没有空字符,因此字符串长度是字符串中的字符个数,在本实例中是23。我们可以在任何时候通过调用字符串对象的length()函数来查看字符串对象所封装的字符串的长度。例如:

  1. cout << "The string is of length " << sentence.length() << endl

执行该语句将产生如下输出:

  1. The string is of length 23 

顺便提一下,我们可以用与任何其他变量相同的方式将字符串对象输出到stdout:

  1. cout << sentence << endl

该代码在它本身的那一行上显示sentence字符串。我们也可以像下面这样将字符串读到字符串对象中:

  1. cin >> sentence; 

然而,以这种方式从stdin中读取字符串时会忽略开头的空格,直到发现非空格的字符。当我们在一个或多个非空格字符后面输入一个空格时,这种方式也会终止输入。我们常常希望将文本读入一个包括空格的字符串对象(可能跨多行)中。在本例中,使用在<string>头文件中定义的getline()函数模板要方便得多。例如:

  1. getline(cin, sentence, '*'); 

这个函数模板专门用来将数据从流中读入到字符串或wstring对象中。第一个实参就是该流(作为输入源)-- 它不一定是cin;第二个实参是接收输入的对象,第三个实参是终止读取的字符。这里将终止字符指定为'*',因此该语句会将cin中的文本(包括空格)读入sentence中,直到从输入流中读到以星号指示的输入末尾。

当然,也可以用函数表示法来初始化string对象:

  1. string sentence("This sentence is false."); 

如果在创建string对象时没有指定初始字符串字面值,该对象就会包含一个空字符串:

  1. string astring;     // Create an empty string 

调用字符串astring的length()将返回结果0。

另一种可能性是通过重复一个字符指定的次数来初始化字符串对象:

  1. string bees(7, 'b'); // String is "bbbbbbb" 

该构造函数的第一个实参是重复第二个实参指定的字符的次数。

最后一种方式是用另一个字符串对象的全部或一部分来初始化字符串对象。下面是用

另一个字符串对象作为初始化器的示例:

  1. string letters(bees); 

这里将用bees中包含的字符串来初始化letters对象。

为了选择一个字符串对象的一部分作为初始化器,我们调用带3个实参的字符串构造函数,第一个实参是作为初始化字符串来源的字符串对象,第二个实参是要选择的第一个字符的索引位置,第三个实参是要选择的字符个数。举例如下:

  1. string sentence("This sentence is false.");  
  2. string part(sentence, 5, 11); 

这里将用sentence中从第6个字符(第一个字符位于索引位置0)开始的11个字符来初始化part对象。因此part将包含字符串"sentence is"。

当然,我们可以创建string对象的数组,并用常规表示法来初始化它们。例如:

  1. string animals[] = { "dog", "cat", "horse", "donkey", "lion"}; 
上面的代码创建字符串对象的一个数组,其中包含5个元素,用大括号括起来的字符串字面值初始化这些元素。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇9.9.6 被指定为new的函数 下一篇8.8.5 搜索字符串(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: