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

简单回顾C++中的字符串

时间:2016-11-12 01:44:59      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:问题   大小   size_t   字符   拷贝构造   标准   初始化   原型   str   

  C++中有两种字符串形式,一种是C语言字符数组,一般可以使用 char*指针来操作它;另一种是C++中基于标准库的string类型,这算是更高层次的抽象数据类型。

  主要讨论一下string类型,既然是基于标准库的,那么使用它时首先要把头文件拿过来,#include<string> using std:string;

 

  1.定义和初始化string对象

    string  s1 ;  //默认初始化,s1是一个空串,s1是string类型的一个对象,创建的时候调用了无参构造函数,初始化为空

    string  s2 = s1;   //使用等号,叫做拷贝初始化,我认为 = 调用了拷贝构造函数,将右值赋值到新创建的对象中去,函数原型类似 string(string s1)

    string s3("hello world")  //构造函数初始化

    string s4(10,c)             // s4的值为  "cccccccccc"

 

  2.string的操作

    os<<s 输入    is>>s  输出     getline(is,s) //cin中读取一行给s,返回is     s.empty() //s为空返回true   s[n] //返回s中第n个字符的引用  s.size() 返回s中字符的个数

  值得注意的是 s.size()的返回类型是 string:size_type类型,看起来它返回一个 int 或者 unsigned 比较合理,但是人家就是返回string:size_type 类型。 这是一个无符号整型的数, 但是如果你在程序中有这样的操作   s.size < n  假设n是一个负数,那么结果八成是true,因为执行这句话时  n转换为无符号数再比较大小,负数转换为无符号数的时候相当大。

    auto len = s.size()    //有了size() 别用 int 了,混用容易出问题

 

  3.字符串相加的时候注意点

    string s1 =  "老王";

    string s = "123"+"3333"+s1;    // 错的,+号两侧至少有一个string对象

     string s = "3333"+s1+"123";    //正确

 

 

 

 

 

 

简单回顾C++中的字符串

标签:问题   大小   size_t   字符   拷贝构造   标准   初始化   原型   str   

原文地址:http://www.cnblogs.com/jushuai/p/6055866.html

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