设为首页 加入收藏

TOP

4.5.1 查找以空字符结尾的字符串的长度
2013-10-07 12:28:58 来源: 作者: 【 】 浏览:70
Tags:4.5.1 查找 字符 结尾 字符串 长度

4.5 字符串的本地C++(www.cppentry.com)库函数

标准库提供的<cstring>头文件中包含操作以空字符结尾的字符串(null-terminated string)的函数。它们是C++(www.cppentry.com)标准特有的一组函数。尽管其中部分函数也有非标准的替换函数,但是它们提供了比原始版本更安全的实现。一般来说我会在它们所在的<cstring>头文件中提到这两种方式,不过我会在示例中使用更安全的版本。下面我们来探索<cstring>头文件提供的最有用的函数。

注意:

本地C++(www.cppentry.com)的<string>标准头文件定义了代表字符串的string和wstring类。string类代表char类型的字符串,wstring类代表wchar_t类型的字符串。两者都在<string>头文件中定义为模板类,它们是basic_string<T>类模板的实例。类模板是参数化的类(在本例中是参数T),可以用来创建新类以处理不同类型的数据。在第8章之前我们不会讨论模板,不过这里要提一下,因为它们有一些与String类型提供的函数(在本章后面的C++(www.cppentry.com)/CLI程序部分会用到)相同的功能。如果您确实有兴趣了解它们之间的差异,可以先快速地看一下第8章中与本节标题相同的那一节。即使没有模板与类的知识,在此处跟着做还是相当容易的。

4.5.1  查找以空字符结尾的字符串的长度

strlen()函数将char*类型的参数字符串的长度作为一个size_t类型的值返回。类型size_t是一个对应于无符号整型的实现时定义(implementation defined)类型,无符号整型一般用来表示各种序号的长度。wcslen()函数与wchar_t*类型字符串的功能相同。

下面的代码说明了如何使用strlen()函数:

  1. char * str("A miss is as good as a mile.");  
  2. cout << "The string contains " << strlen(str) << " characters." << endl

执行这段代码会产生如下输出:

  1. The string contains 28 characters. 

从该输出中可以看出,返回的长度值不包括结尾的空字符。一定要记住这一点,尤其是当我们用字符串的长度来创建另一个相同长度的字符串时更要注意。

strlen()和wcslen()都通过查找末尾的空字符来确定长度。如果末尾没有空字符,函数就会继续在字符串之外检查整个内存,希望找到一个空字符。因此,当使用来自不受信任的外部来源的数据时,使用这些函数意味着有安全风险。在这种情况下,我们可以使用strnlen()和wcsnlen()函数,这两个函数都要求使用第二个参数来指定第一个参数所指定的字符串要存储的缓冲区的长度。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.1.2 声明数组 下一篇4.5.5 搜索以空字符结尾的字符串

评论

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