码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++ string和char数组对比

时间:2017-03-13 23:33:54      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:strcat   前缀   []   names   size   out   round   头文件   main   

string是c++特有的,使用时需添加头文件#include<string>

(一)#include<string.h>和#include<cstring>以及#include<string.h>区别

<string.h>

<string.h>是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。

<cstring>

在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以string.h头文件成了cstring头文件。但是其实现却是相同的或是兼容以前的,这就是<cstring>的来源,不要觉得又多了一个东西。相当于标准库组织给它盖了个章,说“你也是我的标准程序库的一份子了”。

<string>

<string>是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但<string>又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在<string>的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。

 

没有<cstring.h>这样的头文件。

(二)读取/输出方式

 1 #include<string>
 2 #include<stdio.h>
 3 #include<iostream>
 4 using namespace std;
 5 int main(){
 6     string str,str1;
 7     char a[100],b[100];
 8     cin>>str;
 9 //    scanf("%s",str1);//错误!!!string类型不可以用scanf输入 
10     cin>>a;
11     scanf("%s",b);    
12 }

同理,string和char数组均可以使用cin/cout进行输入输出操作。但是string不能通过scanf/printf, 以及puts()和gets()进行输入输出操作。而char数组可以

(三)string类-->char *

     首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些

成员函数比如begin()、end(),迭代器可以根据他们进行定位。

注意,与char*不同的是,string不一定以NULL(‘\0‘)结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。

     把string转换为char* 有3种方法: 
1.data
如:
string str="abc";

char *p=(char *)str.data();

2.c_str
如:

string str="gdfd";

char *p=str.c_str();

3. copy
如:

string str="hello";

char p[40];

str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置

*(p+5)=‘\0‘; //要手动加上结束符

 (四)char[]-->string类

直接赋值即可。

 1 #include<string>
 2 #include<stdio.h>
 3 #include<iostream>
 4 using namespace std;
 5 int main(){
 6     string str;
 7     char p[100];
 8     cin>>p;
 9     str=p;
10     cout<<str<<endl;
11 }

暂时这些 以后再添加

 

C/C++ string和char数组对比

标签:strcat   前缀   []   names   size   out   round   头文件   main   

原文地址:http://www.cnblogs.com/Elaine-DWL/p/6545380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!