您的位置:首页 > 编程语言 > C语言/C++

C++ 初学者指南 第四篇(6)

2010-05-21 16:54 183 查看
必备技能 4.5: 一些字符串相关的库函数

C++支持很多处理字符串的函数。最常用的有:

strcpy()

strcat()

strcmp()

strlen()

这些处理字符串的函数使用同一个头文件,<cstring>。下面我们就学习一下这些函数的使用方法。

strcpy

该函数的常用形式如下:

strcpy(目的, 源);

这个函数把源字符串的内容复制到目的字符串中。注意,用于目的字符串的数组的大小必须足够大,以便存储源字符串中的内容。如果目的字符串的数组大小不够大,则会导致数组写越界,这将有可能导致程序崩溃。

strcat

该函数的常用形式如下:

strcat(字符串1, 字符串2);

函数把字符串2的内容追加到字符串1的尾部。字符串2保持不变。使用这个函数的时候,也需要保证用于存储字符串1的数组要足够大,能够保存得下字符串1和字符串2的内容。

strcmp

该函数的常用形式如下:

strcmp(字符串1, 字符串2);

该函数对两个字符串进行比较。如果两个字符串的内容相同,则返回0;如果字符串1根据字典序大于字符串2,则返回一个正数;如果字符串1根据字典序小于字符串2则返回一个负数。

使用这个函数需要注意的是如果两个字符串相同,函数的返回值为假。因此,如果需要在两个字符串相同的时候作某些事情,就必须在判断语句中使用!。例如,下面代码片段中控制if语句的条件只有在str的内容和“C++”相同的时候才为真。

if ( !strcmp(str, “C++”)) cout << “str is C++”;

strlen

该函数的通用形式如下:

strlen(字符串);

函数返回字符串的长度。

使用字符串函数的示例:

//演示字符串函数的使用

#include <iostream>

#include <cstdio>

#include <cstring>

using namespace std;

int main ()

{

char s1[80], s2[80];

strcpy(s1, "C++");

strcpy(s2, " is power programmimg.");

cout << "lengths:" << strlen(s1);

cout << ' ' << strlen(s2) << '\n';

if (!strcmp(s1,s2))

cout << "The strings are equal\n";

else cout << "not equal\n";

strcat(s1,s2);

cout << s1 <<'\n';

strcpy(s2,s1);

cout << s1 << " and " << s2 << "\n";

if (!strcmp(s1,s2))

cout << "s1 and s2 are now the same.\n";

return 0;

}

程序的输出结果如下:

lengths:3 22

not equal

C++ is power programmimg.

C++ is power programmimg. and C++ is power programmimg.

s1 and s2 are now the same.

使用字符串结束标识

字符串以0结尾这个特点可以被用来简化程序。例如,下面的程序把一个字符串转换为大写的。

//把一个字符串转换为大写的

#include <iostream>

#include <cstring>

#include <cctype>

using namespace std;

int main ()

{

char str[80];

int i ;

strcpy(str, "This is a test");

for ( i = 0; str[i]; i++ )

{

str[i] = toupper(str[i]);

}

cout << str;

return 0;

}

程序的输出结果如下:

THIS IS A TEST

上面的这个程序中用到了库函数toupper()。这个函数返回字符参数的大写字符。使用该函数,需要引入头文件<cctype>

需要注意的是for循环的控制条件为控制变量索引的字符数组的元素。这样作是合理的,因为真值就是任何非零的值。请记住,所有的字符值都是非零的,只有字符串的结束标志是0。因此,这个循环会一直进行,直到遇到字符串的结束标志,也就是str[i]为零的时候。因为所用的用户标记字符结束的0都是在字符传的最末尾,所以上面的循环能够正确第完成我们预期的任务。在专业的C++代码中,我们会看到很多这种使用字符串结束标记的例子。

专家答疑

问:除了toupper()之外,C++还支持别的字符处理函数吗?

答:是的。C++标准库包含了几个其他的处理字符的函数。例如与toupper()相对应的tolower()。它返回一个字符对应的小写的字符。我们还可以使用函数isupper()来判断一个字符是不是大写的。如果字符是大写的,这个函数返回真值。还有islower()函数,如果字符是小写的,函数返回真值。还有其他的函数,如isalpha(), isdigit(), isspace()和ispunct()。这些函数的参数都是一个字符,函数返回字符的类型。例如, isalpha()函数,如果字符是字母表中的字符,则函数返回真值。

练习:

1. strcat函数是用来作什么的?

2. 当用strcmp函数比较两个相同的字符串的时候,函数返回什么?

3. 写出如何获取名为mystr的字符串的长度?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: