浅析string类字符串和C风格字符串之间的区别

最大的区别就是C风格的字符串是静态的,不可以动态变化,使用极为麻烦。
而C++的std::string类型动态管理,非常方便。

C风格字符串和char数组是不一样的,看下面两种定义:
char carr1 = {'a', 'b', 'c'};
char carr2 = {'a', 'b', 'c', '\0'};
看上面,carr2可以说成是C风格字符串,carr1就不是C风格字符串,C风格字符串必须要以'\0'结尾的。
string类是标准库的类,并不是内置类型,标准库就像是我们自己定义的类差不多的,string类型对象没有标配'\0'结尾的。如果需要用string类给C风格字符串赋值的话,后面是需要添加'\0'的。

(0)

相关推荐

  • C字符串与C++中string的区别详解

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:  C字符串 string对象(C++) 所需的头文件名称  <string>或<string.h> <string>或<string.h> 需要头文件 原因 为了使用字符串函数 为了使用string类 声明 方式 char name[20]; string name; 初始化方式 char name[20]="

  • c++中string类成员函数c_str()的用法

    1.string类成员函数c_str()的原型: const char *c_str()const;//返回一个以null终止的c字符串 2.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式; 3.操作c_str()函数的返回值时,只能使用c字符串的操作函数,如:strcpy()等函数.因为,string对象可能在使用后被析构函数释放掉,那么你所指向的内容就具有不确定性.

  • c++中的string常用函数用法总结

    标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要.我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?).我们尽可以把它看成是C++的基本数据类型. 好了,进入正题---首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>

  • c字符串,string对象,字符串字面值的区别详解

    一.字符串字面值字符串字面值是一串常量字符,字符串字面值常量用双引号括起来的零个或多个字符表示,为兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符.字符串没有变量名字,自身表示自身 复制代码 代码如下: "Hello World!" //simple string literal"" //empty string literal"\nCC\toptions\tfile.[cC]\n" //string literal us

  • C++如何通过ostringstream实现任意类型转string

    再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便.后来去网上找了一下,发现有一个好方法: 复制代码 代码如下: #include <iostream>#include <sstream>#include <string>using namespace std; int main(){ int a = 55; double b = 65.123; string str = "&quo

  • 用标准c++实现string与各种类型之间的转换

    要实现这个目标,非stringstream类莫属. 这个类在头文件中定义, < sstream>库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一个对应的宽字符集版本. 简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作. 示例1示范怎样使用一个stringstream对象进行从 string到int类型的转换 注意,使用string对象来代替字符数组

  • 浅析string类字符串和C风格字符串之间的区别

    最大的区别就是C风格的字符串是静态的,不可以动态变化,使用极为麻烦.而C++的std::string类型动态管理,非常方便. C风格字符串和char数组是不一样的,看下面两种定义:char carr1 = {'a', 'b', 'c'};char carr2 = {'a', 'b', 'c', '\0'};看上面,carr2可以说成是C风格字符串,carr1就不是C风格字符串,C风格字符串必须要以'\0'结尾的.string类是标准库的类,并不是内置类型,标准库就像是我们自己定义的类差不多的,s

  • Java String类的理解及字符串常量池介绍

    目录 一. String类简介 1. 介绍 2. 字符串构造 二. 字符串常量池(StringTable) 1. 思考? 2. 介绍和分析 3. intern方法 三. 面试题:String类中两种对象实例化的区别 四. 字符串的不可变性 一. String类简介 1. 介绍 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. Java的String类在lang包里,java.lang.String是java字符串类,包含

  • Java进阶教程之String类

    之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础.在Java进阶中,我将对Java基础进行补充,并转向应用层面. 大部分编程语言都能够处理字符串(String).字符串是有序的字符集合,比如"Hello World!".在Java中,字符串被存储为String类对象.调用字符串对象的方法,可以实现字符串相关的操作. String类包含在java.lang包中.这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class).我

  • Java String类的常用方法汇总

    一.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间. 二.String类对象的创建 字符串声明:String stringName; 字符串创建:stringName = new String(字符串常量);或stringName = 字符串常量; 三.String类构造方法 1.public

  • 轻松学习C#的String类

    字符串是由零个或多个字符组成的有限序列,是几乎所有编程语言中可以实现的非常重要和有用的数据类型.在C#语言中,字符串是System.String类的一个引用类型,但与其他引用类型不同的是,C#将字符串视为一个基本类型,可以声明为一个常量,并可以直接赋值.由于C#中的字符串是由System,String类派生而来的引用对象,因此可以使用String类的方法来对字符串进行各种操作.下面通过几个例子来讲述String类的几个重要方法. 一.字符串的截取 字符串截取是通过Substring方法实现的,它

  • JAVA中String类与StringBuffer类的区别

    在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类). 下面先简单的说一下两者的区别. String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同. (1) String类 该类一旦产生一个字符串,其对象就不可变.String类的内容和长度是固定的.如果程序需要获得字符串的信息需要调用系统提供的各种字符串操作方法实现.虽然通过各种系统方法可以对字符串施加操作,但这并不改变对象实例本身,而是生成一个新的实例.系统为Stri

  • 详解Java中String类的各种用法

    目录 一.创建字符串 二.字符.字节与字符串的转换 1.字符与字符串的转换 2.字节与字符串的转换 三.字符串的比较 1.字符串常量池 2.字符串内容比较 四.字符串查找 五.字符串替换 六.字符串拆分 七.字符串截取 八.String类中其它的常用方法 九.StringBuffer 和 StringBuilder 1.StringBuilder与StringBuffer的区别 2.StringBuilder与StringBuffer常用的方法 十.对字符串引用的理解 一.创建字符串 创建字符串

  • C++字符数组、字符数组指针和string类

    目录 1.字符数组和字符数组的指针 2.标准库string类 3.补充 3.1C++自带string类的常用方法 C++中字符串的表示方式有很多种,根据自己目前掌握的有三种: 字符数组: 字符数组指针: 标准库string类: 上面几种方式各有优点和缺点,按照自己的观点,如果处理的字符串的任务比较简单,则使用前两种方法所占用内存小,因而较为实用:如果需要进行字符串拼接和比较等功能,则使用string类比较合适,因为字符数组不含有处理函数. 1.字符数组和字符数组的指针 定义字符数组即使用char

  • C++STL之string类的使用

    目录 1.STL简介 (1)什么是STL (2)STL的版本 (3)如何学习STL (4)STL的六大组件 2.string类的基本概念 (1)含义 (2)使用方法 (3)原理 3.string类中常见构造函数 4.string类中析构函数 5.string类对象的容量操作 (1)显示容量 (2)扩容 6.string类中operator[]重载 (1)举例 (2)底层实现 7.string类与迭代器 (1)举例 (2)反向迭代器 (3)使用迭代的意义 (4)补充:语法糖实现遍历 8.strin

  • 详解C++的String类的字符串分割实现

    详解C++的String类的字符串分割实现 功能需求,输入一个字符串"1-2-3"切割出"1"."2"."3".在Java下直接用String的split函数就可以了.c++下String没有直接提供这个函数,需要自己写. 网上给出的解决方案是这里的三种方法.但我是通过JNI访问的,在里面用这些vector可能不中,自己封装了个,仅供参考: String recogScop = "01-02-03"; co

随机推荐