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

C++11-----Basic2

时间:2015-04-30 19:36:15      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

1.使用using声明

  .using namespace spacename

  .using namespace::name

2.标准库类型string

  Initialization

    .string s     // default null string

    .string s(s1)   // copy initialization

    .string s = s1  // 同上

    .string s ("xxxx")

    .string s = "xxxxx"

    .string s(n, ‘c‘)  // s初始化为连续n个字符c组成的串

    .string s = {‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘0‘};

  Manipulate

    Iterator:

      begin()

      end()

    Capacity:

      size()

      length()

      capacity()

      resize()

      reserve()

      clear()

      empty()

    Access:

      []

      at()

      front()

      back()

    Modifiers:

      operator+=

      append()

      push_back()

      insert()

      erase()

      swap()

    String operations:

      c_str()

      data()

      copy()

      find()

      substr()

      compare()

    Compare:

      ==

      != 

      >  >=

      < <=

    Other:

      is >> s

      os << s

      getline(is, s)

Note:

  •   length() & size(): length() 为C风格,size()为STL引入
  •       [] & at():  [] 当访问的下标超出时,不进行范围检查,其结果是未定义的;at()会进行范围检查,下标超出,抛出out_of_range异常
  •       c_str() & data(): c_str()返回一个null结尾的内容的指针;data()仅仅返回内容不包括null的指针,仅仅提供有效字符数据
  •       string对象中不能靠‘\0‘而截断字符串,只有在C风格字符串中‘\0‘才具有实际意义

如下,我们编写了一个teststring.cpp的程序用于测试

技术分享

编译运行:

    #g++ -Wall -g -std=c++0x teststring.cpp      //默认生成可执行程序a.out

    #./a.out

技术分享

说明:

  1.最开始s初始化为空字符串, 打印长度为0

  2.s添加内容,即使有null字符,个数也计算在内, 故size为9;C风格字符串,始终以\0最为结束符,故size为5

  3.使用C风格的字符串初始化或者添加到string对象中时,会在\0出截断,\0后的内容被丢弃;使用带\0的string对象初始化或者添加到新string对象中时,新string对象不会再\0出截断,如S2打印所示

附录:

  技术分享

                        图1

技术分享

                              图2

Note:

  从图1总可以开出s += ‘\0‘字符时,调用了push_back()函数,s的长度计数加1

  由此推导,当 += c风格字符串时,追加的仅仅是strlen(cstr)的长度; 当+= string对象时,追加的是string.size()的长度

技术分享

                                      c_str() & data()

Note:

  string对象不以空字符(null, ‘\0‘)标识字符串结尾

 

3. 范围for(range for)    // c++11 add

  for(range_declaration:range_expresssion)

    loop_statement;

  range_declaration:  一个变量声明,其为range_expression的序列的一个元素或引用;通常使用auto来检测其类型

  range_expression:  能够表示为序列的表达式或花括号初始化列表

4.vector

  Initialization

    vector<T>  v

    vector<T>  v1(v)

    vector<T>  v1 = v

    vector<T>  v {.....}      // initialize-list

    vector<T>  v = {......}

    vector<T>  v(n, val)

    vector<T>  v(n)

   Other

    v.empty()

    v.size()

    v.push_back()

    v[n]

     == != > >= < <=

 

5.迭代器(iterator)

 

C++11-----Basic2

标签:

原文地址:http://www.cnblogs.com/tesion99/p/4466053.html

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