C++中String类与char array的区别

来源:互联网 发布:软件著作权在线查询 编辑:程序博客网 时间:2024/06/05 04:49

        区分研发人员的素质有两方面,一是从大处着手,思考问题和解决问题的方法;另外一个就是从小处考查,一些技术点或者经典技术难题。相信很多程序员在从C语言转入C++语言之后,开始接触面向对象和封装的概念,不过这些东西在C语言里面也有,这里有一个经典的问题是:C++中的String类和C语言中的字符数组区别是什么?

        其实C++中的String类只是对C语言中的字符数组做了一个封装,我们来看看C++标准函数库中String类的定义:

template<
    class CharT,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>
> class basic_string;

std::string与std::basic_string<char> 的关系为typedef方式。


        针对上面这个问题的解答,可以尝试着了解下面几个问题,答案就迎刃而解了:

(1)string.h与cstring在C++的头文件包含里面有何区别?  (例如兼容性)

(2)String类对字符数组进行封装,有什么好处?  (例如避免常见的数组越界,减轻程序员负担)

(3)String类中存储的字符串是不是以'\0'结尾的?   (视编译器而定)

        实质上,这些问题都是与标准库的演进有关,在某些时间段,某些解答是正确的,多动手实践才能检验真理。


原创粉丝点击