关闭

C++ string和c类型字符数组的比较

标签: stringc字符串c++
1008人阅读 评论(0) 收藏 举报
分类:

在c++中string是很方便操作的字符串,支持多种算数运算和比较运算,操作起来非常灵活。

string也具有一些容器的性质,可以通过迭代器对字符元素进行访问

c类型的字符数组有如下三种初始化方式:


//前两种的初始化方式是等同的,最后一种没有‘/0’char *cp="hello";char c_arr[]="hello";char c_arr2[]={'h','e','l','l','o'};

这三种定义c字符串的方式,其中前两种虽然形式不一样但含义是一摸一样的,没有差别,在计算字符长度的时候都会比实际显示的字符长度多1,因为这两种初始化会在字符串末尾默认添加了一个‘/0’。而第三种初始化方式的长度就是方括号里的字符数,这种方式并不会默认末尾结束符'/0'。如果用第三种方式声明和前两种方式同样的字符串则需这样声明:


char c_arr2[]={'h', 'e', 'l', 'l', 'o', '/0' };


string可以用c字符串进行初始化,如


string s1(cp);//复制cp中的所有字符到s1中(除了末尾空字符'/0')string s2(c_arr,2);//复制c_arr两个字符到s2中string s3(c_arr2);//error


但注意,当对string用c字符串进行初始化时,或是指定初始化的长度(如strings2(c_arr,2);),如果不指定长度需要c字符串必须以'/0'结尾,如果不是以'/0'结尾则程序会出错。如代码(string s3(c_arr2);)程序编译的时候就会出错。


string类型也可以转换成c类型的字符串,可以通过string的成员方法string::c_str()进行转换。

如下

string str("hello");const char  *cp=str.c_str();
 
1
0
查看评论

关于C语言字符串数组

 <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5...
  • angelo_yz
  • angelo_yz
  • 2009-04-16 10:48
  • 7908

C字符串数组赋值

C字符数组赋值 举例如下: char a[10]; 1、定义的时候直接用字符串赋值 char a[10]="hello"; 注意:不能先定义再给它赋值,如  char a[10];  a[10]="hello"; 这样是...
  • maopig
  • maopig
  • 2012-08-09 21:38
  • 21137

c++ new string数组问题

今天考虑一个问题:       string *p = new string[5];       p[0] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&quo...
  • leiting_imecas
  • leiting_imecas
  • 2016-06-12 19:53
  • 1378

c\c++中比较两个字符串或string对象是否相等

c\c++中比较两个字符串或string对象是否相等         在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。如果要比较的对象是char*字符串,则利用 int strcmp(const char* s1,const char* s2)...
  • Allenlzcoder
  • Allenlzcoder
  • 2017-10-16 21:32
  • 3455

【C语言】比较两个数组中是否有相同的元素

比较两个数组中是否有相同的元素
  • LX18792732127
  • LX18792732127
  • 2016-09-22 20:33
  • 3574

char数组 、char指针与字符串常量的比较

数组不是基本类型,不能直接参与比较,数组与字符串及字符指针与字符串比较其实比较的是二者的地址。 例: int isequiv(char *t) { if (t == "char") return 1; else return 0; } int main() { char tes...
  • zz460833359
  • zz460833359
  • 2015-09-30 18:48
  • 2879

C++中字符数组和字符串string

字符数组 C++中字符数组用char str[]可以用来表示一个字符串。 (1)   数组的大小和字符串的长度。 数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志。当然对于未初始化的也补’\0’. #include #include...
  • Lu597203933
  • Lu597203933
  • 2014-09-19 22:50
  • 28624

c/c++ 字符数组、字符指针和字符串类型总结帖

一、字符数组 定义略 初始化方式: 1 char c[10]={'a','b','c','d','e','f','g','h','i','j&...
  • goodcat12
  • goodcat12
  • 2012-07-23 18:33
  • 2942

C++ 字符数组、字符串【输入、输出】

// char str[5] = "hello";//编译失败、提示字符串太长 char str[] = { '1', '2', '3', '4' }; //可以编译通过, 可是打印直到遇到\0才结束 cout &l...
  • ID19870510
  • ID19870510
  • 2016-02-02 11:35
  • 4170

c语言中的字符数组和字符串之间的关系

一、字符串的结束标志'\0' 1、很多时候我们都是可以看到相关的内容就是: 使用数组来存储字符串,也就是我们经常会使用到sizeof()和这个函数,而,这个函数只是求出当前该数组的最大容量,而不是数组中实际存放的内容,我们一般都是需要使用'\0'来表示字符串的而结尾,...
  • u012496940
  • u012496940
  • 2015-10-22 18:13
  • 3103
    个人资料
    • 访问:212722次
    • 积分:3565
    • 等级:
    • 排名:第10989名
    • 原创:95篇
    • 转载:193篇
    • 译文:0篇
    • 评论:22条
    博客专栏
    最新评论