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

C++ 标准库类型

时间:2018-10-07 23:30:17      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:判断   UNC   完全   自动   ==   cin   代码   养成   成员   

1、命名空间的using 声明

     每个名字都需要一个using 声明,使用using 后就不需要再使用“std::”作用域
     如:
     include <iostream>
     include<string>
     using std::cin;
     using std::cout;
     using std::endl;
     using std::string;
     int main()
     {
cout<<"Enter two numbers:"<<endl;
     }
 
     注意:在头文件中,必须总是使用完全限定的标准库名字,即保留std::cin这样的作用域操作,头文件中应该只定义确实必要的东西,要养成这样的良好习惯。
 
2、标准库string 类型和字符串字面值不一样
      string 是一种类,里面带有构造函数
      字符串面值只是一串常量,加上“\0”空字符,所以要区分两者的使用

 

3、读取string,忽略开头的所有空字符,当再次遇到空字符时,则读取终止
 
4、读入未知数目的string 对象
    string word;
     while(cin >> word)
{
cout << word << endl;
}
    // Window 的系统结束符是同时按下CTRL+Z
 
5、用get line 可以读取整行文本
      但是getline函数返回时丢弃换行符,只要getline遇到换行符,则停止读入并返回
    string word;
     while( getline(cin , word) )
{
cout << word << endl;
}
6、string 的操作
     string  st("The expense of spirit\n")
     if ( st.empty( ) ) ……    判断st字符串是否为空
     if (st.size( ) == 0) ……判断st字符串是否为空
 
     注意:size 函数返回的是 string::size_type 类型,不要把size 的结果赋值给一个int 变量。
               size_type 类似一种unsigned 类型,存储的范围可能远大于int
 
string s1="hello";
unsigned int length,length2;
length = s1.size( );// length = 5;
length2 = sizeof("hello");// length = 6; 包含一个结尾的空字符
 
7、string 的关系操作符
     string 对象在做比对的时候,会区分大小写,大写的字母比小写的字母小
     如果两串字符不一样,则第一个不同的字母比大小。
 
8、string 对象和字符串面值的连接
     string与字符串相加,+的左右字符至少有一个string 对象。如
     string s1="hello";
     s1=s1+","+"world";  //s1+","会返回一个string,然后再与world相加
     s1="hello"+"world"+s2; //该种定义是错误的  
 
9、通过下标(索引)获取string 中的字符
     string  bookname="HELLO";
     string::size_type ix;
     ix= 0;
     cout<<bookname[ix];  // 输出的结果是“H”
     ix= bookname.size( );
     cout<<bookname[ix-1]; // 输出的结果是"O"
 
10、i++和++i的区别
     在有些代码行里面就有区别了,比如:
     a=5;x=a++;    经过这一句后x=5,a=6;
     但是如果是:a=5;x=++a;经过这一句后,x=6,a=6;
     有了 C++ 之后,因为 ++itr 和 itr++ 有了显著的区别。
     而 ++itr 从任何意义上讲,都比 itr++ 要好。(有些对象甚至就只能前++)
     如果真的要统一代码格式的话,就都统一成 ++i 要好一些,
     因为对于 C 来说,它没有任何区别,对于 C++ 来说,却大不相同。
 
11、string 对象中字符的处理
       有很多的函数可以用于处理string 对象中的字符,主要包含在cctype 头文件中
       具体详见C++ P77进行查阅。
       如统计语句中标点符号的数量:
       string s("Hello world!!!");
       string::size_type  pucnt =  0;
       for(string::size_type i=0; i!=s.size(); ++i)
{
if ( ispunct(s[i]) ) ++pucnt;
}
cout << puncnt_cnt << endl;
        
这些函数用于处理标点、转换大小写等操作拥有较大的便利。
 
12、采用C标准库头文件的C++版本
        C的命名方式是name.h,如ctype.h
        继承到C++之后就是cname,如cctype,不需要加后缀h,这样,所有的名字都包含在名字空间std中,
        就不会给程序带来负担。
 
13、VECTOR类型,vector 又称为容器,是一种类型对象的集合。vector 是 一个类模板。
使用vector 之前要包含相应的头文件。
        #include <vector>
using std::vector;
vector <int> ivec; // ivec是含有若干个int类型对象的vector
                                    //vector的<>里面的是集合的类型,<>后跟着集合的名称
 
14、vector的定义和初始化
       vector <int>  ivec1;
       vector <int>  ivec2(ivec1);
       vector <int>  ivec3(10,-1);  //10个元素,每个元素初始化值为-1
       vector <int>  ivec4(20); //20个元素,int 自动初始化为0
 
15、vector 对象的操作,与string 类似
       v.empty() ; //判断是否为空
       v.size() ; //判断有多少元素,返回的值与string一样,用vector <int> :: size_type表示
       v.push_back(t) ; //在vector的末尾增加一个值为t的元素
       v[n] //vector中第n个元素,该类下标的操作,从0开始,下标的类型为 vector <int> :: size_type n
       注意:必须是已存在的元素,才能用小标操作,否则是违规操作。
 
16、迭代器简介
        现代C++程序更倾向于使用迭代器而不是下标操作访问容器元素。
每种容器的类型都定义了自己的迭代器类型
        如:
        vector<int>::iterator iter;
 
17、迭代器的begin和end操作
        vector<int>::iterator iter= ivec1.begin(); // begin()相当于取第一个元素的下标,0
        ivec1.end() ; // end()取的是最末尾元素的下一个标号,指向一个不存在的元素,表示已经处理完所有的元素
 
18、迭代器的解引用运算
 vector<int>::iterator iter= ivec1.begin(); 
*iter= 0;   //指向第一个元素
ivec1[0]=0;  //两条语句的运算结果是一样的,同时Iter的自增使用++i
        ++iter;    //指向第二个元素
 
19、区分const 和const_iterator
       const_iterator可用于读取容器中的值,但不能进行写操作,例如
       vector<int>::const_iterator cit=nums.begin();
       cout<<*cit<<endl; //输出第0个成员,假设nums里面存放的数据超过3个
       ++cit;//cit 可以进行递增的操作
       cout<<*cit<<endl;//输出第1个成员
 
const vector则是指迭代器为常量,就不能进行如上面的自增操作。
vector<int> nums(10);
const vector<int>::iterator cit=nums.begin();
*cit = 1;// 将第0个成员,赋值为1,操作到此为止,如果再进行++cit则会报错;
 
20、迭代器的算术操作
①iter+n
           iter-n   // 运算后,iter的值必须指向vector 中的某个元素,或者末端的后一个元素
②iter1-iter2  //iter1、iter2必须是指向同一个vector的迭代器,这个用于计算2个迭代器的距离
    //该距离的名称叫difference_type
   // iter1和iter2都必须是指向vector的某个元素,或者末端的后一个元素
           注:末端的后一个元素就是nums.end()所指向的位置
                  当vector经过长度的操作,如push_back操作后,迭代器的值失效,需要重新进行制定
 
21、

C++ 标准库类型

标签:判断   UNC   完全   自动   ==   cin   代码   养成   成员   

原文地址:https://www.cnblogs.com/lnleelove/p/9751797.html

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