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()函数:
这里我们定义一个string:string 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- C字符串
- C++--字符串
- C字符串
- [C#] 字符串
- c字符串
- C++--字符串
- C-字符串
- C-字符串
- C:字符串
- C字符串
- C 字符串
- C--字符串
- C 字符串
- C字符串
- 【c++】字符串
- C字符串
- 【C++】字符串
- C字符串
- Struts2的表单标签
- Binding to array object elements' demo
- 各OS平台上JDK上的差异
- 自定义类加载器
- JVM调优
- c++/c字符串
- javascript元素类型
- 如何将数据库水平切分
- 认识flex中的sprite
- Tomcat处理HTTP请求源码分析(下)
- istringstream"类和getline()的用法分
- 和弦知识详解(关于和弦组成、编配、即兴)
- slab slub和内存管理
- WEB应用添加SSL支持