c++/c字符串

来源:互联网 发布:淘宝店铺数据监控 编辑:程序博客网 时间:2024/05/17 08:34
 

1.       C风格字符串:起源于C,并在C++中得到支持。

a.       存储方式:被存储在一个字符数组中,通过一个char*类型的指针来操纵它。

b.       提供的库函数:包含头文件:#include<cstring>

a)         int strlen( const char* );//返回字符串的长度

b)        int strcmp( const char*, const char* );//比较两个字符串是否相等

c)        char* strcpy( char*, const char* );//把第二个字符串拷贝到第一个字符串中

#include<iostream>

#include<cstring>

#include<stdio.h>

usingnamespace std;

void main()

{

    char* arraya = "hello world!";

    int c;

    c = strlen(arraya);

    cout<<c<<endl;

    char arrayb[80];

    char * test = NULL;

    test = strcpy (arrayb, arraya);

    cout<<"test is: "<<test<<endl;

    cout<<arrayb<<endl;

    int d;

    d = strcmp(arrayb,arraya);

    cout<<endl<<"d->"<<d<<endl;

}这段代码包含了以上三个库函数的使用,运行结果可以自己在编译器上试一下!

二:c++风格的string

1.       我们使用string,它的库函数有很多,当我们需要获得某个字符串的长度的时候,可以调用size()函数:

这里我们定义一个stringstring sa = “hello world!”;

1)我们调用size()函数:sa.size();它的值就是12

2)我们需要判断一个字符串是否为空的时候,我们可以调用empty()函数来判断:sa.empty();若这个字符串为空,那么它将返回1,若不为空,则返回0

3)我们会用到拷贝字符串的情况,在我们初始化一个字符串的时候,我们可以初始化成一个字符串的拷贝:string sc(sa);在这段代码后,sc的内容和sa就完全相同了。我们可以使用一个判断语句来判断这两个字符串是否相等:if( sc == sa)…

    这里还有一种方法,用于字符串的赋值和拷贝:sc = sa;在这个语句后使用if判断语句判断得两个字符串依旧相等。

4) 我们需要两个字符串连接的时候,我们可以使用一种相较于C风格字符串简单的方法,我们定于:string sa = “I’m ”;string sb = “a ”;string sc = “boy!\n”;

如果我们希望得到一个字符串是:I’m a boy!换行…我们可以尝试用:

String sd = sa + sb + sc;最后sd的结果就是:I’m a boy!

5) 在我们遇到需要把一个C字符串赋值给一个C++字符串的时候,我们可以使用赋值语句直接赋值,这样的代码:

char * cs_a = "hello my friend!";

    string sh;

sh = cs_a;在这段代码中,输出sh,将输出hello my friend!我们可以再次使用判断语句判断这两个字符串是否相等,if(cs_a == sh)cout<<”the two string equal!”;

最后的输出时相等的,在这个语句中我们收获到两个信息,第一,这样的判断语句可以判断一个C字符串和C++字符串是否相等;第二,我们明白了这样把C串赋值给C++串是完全可行的。

6) 当我们需要把一个C++字符串转换成为C字符串时,是不能自动转换的。如果我们写下以下代码:

string si = "good morning!";

    char * cs_b = si;这会有编译错误,而错误提示为:

“初始化”: 无法从“std::string”转换为“char *”

这时候就需要调用一个库函数:c_str();这个函数为了防止字符数组被程序直接处理,c_str的返回值是一个指向常量数组的指针,这个函数的使用将是:

const char * cs_b = si.c_str();

然后我们可以再用if判断一下两个字符串是否相等,经过判断,完全相等。

7) C++字符串同样支持下表访问某一个字符,比如:

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

       cout<<" "<<si[i];这段代码的输出将是: g o o d m o r n i n g !

    这里也可以利用迭代器iterator的知识,并使用replace()来替换某一些字符:

    replace(si.begin(), si.end(), 'o', 'a');

 
来自: http://hi.baidu.com/%C5%B4%C3%D7%C8%F1%D7%D3/blog/item/32807e6730555e2dab184caf.html

原创粉丝点击