天天看点

C、C++字符串详解C中的字符串C++中的字符串类比较

C中的字符串

存储方式

C中的字符串一般是采用字符数组来存储的。它由实际部分和末尾的标识符组成

s

的长度为

len

,则

s[0]

~

s[len-1]

一共

len

的长度存的是

s

的实际部分。但是,实际上

s

的占位是

s[0]

~

s[len]

。这

s[len]

存的是什么呢?是一个空字符

'\0'

。它标记着字符串的结尾。通过这个标记,一些字符串操作的函数才能够方便的实现

输出方式

一般采用

printf("%s", s)

输出一个名为

s

的字符串。当然,也可以采用C++中的输出方式

cout << s

来输出一个字符串,但是比

printf()

慢。同样,也可以通过顺序遍历这一字符数组,通过

putchar()

进行输出,稍微比第一种方式快,可以看作一个小优化。

字符串函数

在C++中,为了方便对C类字符串进行操作,C++标准在

cstring

头文件中定义了许多字符串(操作)函数。详情可看这里 (链接引用自芮小谭的博客)

C++中的字符串类

C++的STL标准中,在头文件

string

中定义了字符串类

string

,它重载了许多的运算符,比C类字符串的操作更方便。详细资料请看这里(链接引用自勤奋的小小蚂蚁的博客)

输入方式:

cin >> s;

读入到空格或换行符为止

getline(cin, s)

读入一行字符串

比较

在OI中,我们大部分人都比较喜欢使用C++的

string

字符串类,因为它看起来好用的多,字符串操作速度也不慢。但是,有一弊端是它必须使用C++的

istream

系列输入流进行读入,效率较低。故若我们要读入大量字符串时,最好还是写C的字符串。(

string

输出可以使用

.c_str()

转换为C字符串后,再用

printf()

输出)

继续阅读