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


    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('')结束。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)=''; //要手动加上结束符

     (四)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 }

    暂时这些 以后再添加

  • 相关阅读:
    《Python for Beginners》学习笔记(2)
    《Python for Beginners》学习笔记(6)
    《Python for Beginners》学习笔记(4)
    《C Primer Plus》阅读笔记(1)
    《Python for Beginners》学习笔记(7)暨结课总结
    《Python for Beginners》学习笔记(5)
    《Python基础教程》读书笔记(1)
    《Python for Beginners》学习笔记(3)
    让Rails版的FCKEditor支持动态设置上传目录
    FCKEditor与rails的集成
  • 原文地址:https://www.cnblogs.com/Elaine-DWL/p/6545380.html
Copyright © 2020-2023  润新知