设为首页 加入收藏

TOP

3.5 理解C风格字符串
2013-10-07 14:44:28 来源: 作者: 【 】 浏览:75
Tags:3.5 理解 风格 字符串

3.5  理解C风格字符串

有string对象之前,C++(www.cppentry.com)程序员使用以空字符结尾的字符数组表示字符串。这些字符数组现在称为C风格字符串,因为这种表示字符串的习惯是从C程序开始的。声明和初始化C风格字符串的方法和其他数组一样:

  1. char phrase[] = "Game Over!!!"; 

C风格字符串以一个称为空字符的字符结尾。空字符可以写成'\0'。上面的代码不需要使用空字符,因为它已经存储在字符串的结尾处。所以,从技术上而言,phrase有13个元素(然而,使用C风格字符串的函数则认为phrase的长度为12,这是合理的,并且与string对象的工作原理一致)。

至于其他任意类型的数组,可以在定义时指定数组大小。因此,声明和初始化C风格字符串的另一种方式是:

  1. char phrase[81] = "Game Over!!!"; 

这行代码创建了一个可以容纳80个可打印字符的C风格字符串(另外还有一个终止空字符)。

C风格字符串没有成员函数,但是作为标准库一部分的cstring文件中包含了各种使用C风格字符串的函数。

string对象的优点在于,它们被设计为可以和C风格字符串很好地结合使用。例如,下面给出的都是C风格字符串和string对象的合法用法:

  1. string word1 = "Game";  
  2. char word2[] = " Over";  
  3. string phrase = word1 + word2;  
  4. if (word1 != word2)  
  5. {  
  6. cout << "word1 and word2 are not equal.\n";  
  7. }  
  8. if (phrase.find(word2) != string::npos)  
  9. {  
  10. cout << "word2 is contained in phrase.\n";  
  11. }  

string对象可以和C风格字符串连接起来,但结果仍然是一个string对象(所以char phrase2[] = word1 + word2;会产生错误)。可以使用关系运算符比较string对象和C风格字符串,甚至还可以将C风格字符串用作string对象成员函数的实参。

C风格字符串和数组有共同的缺点,其中最大的一个是它们的长度是固定的。因此,应当遵循的原则是:只要可能就使用string对象,但是如果有必要的话,需做好使用C风格字符串的准备。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.6.1 Tic-Tac-Toe Board程序简介 下一篇3.4.4 使用数组元素的成员函数

评论

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