首页 > 编程语言 > 详细

C++primer(第五版)读书笔记&习题解答---CHAPTER 3

时间:2015-12-05 19:20:24      阅读:228      评论:0      收藏:0      [点我收藏+]
  • C++标准库类型包括:string,vector和迭代器,其中string是可变长的字符序列,vector存放的是某种给定类型对象的可变长序列,迭代器是string和vector的配套类型,常被用于访问string中的字符和vector中的元素。

  • 内置类型是C++直接定义的,与硬件密切相关,而标准库类型是一种高级类型,尚未实现到硬件中。如:相较于标准库类型string和vector,数组在灵活性上稍显不足。

3.1 命名空间的using声明

  1. std::cin的理解:“::”表明编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字,故std::cin意味使用命名空间std中的名字cin。为了在编写程序时简短输入,使用using声明,形式为:using namespace ::name;
  2. 每个名字都需要独立的using声明,C++语言形式自由,既可以只有一条using声明语句,也可以多条,但要保证用到的每个名字都必须有自己的声明语句。

  3. 头文件不应包含using声明,因为头文件的内容会拷贝到所有引用它的文件中,当头文件中含有using声明时,每个使用该头文件的文件都含有此条声明,对于某些程序,不经意包含一些名字,可能会发生名字冲突。

练习3.1答案
1.9 while循环实现50到100的正数相加
 #include<iostream>
 using std::cout
 using std::endl;
 int main()
 {
     int sum=0,i=50;
     while(i<=100)
     {
         sum+=i;
         i++;
     }
     cout<<sum<<endl;
     system("pause");
     return 0;
 }
1.10 逆序打印10到0之间的整数
#include<iostream>
using std::cout
using std::endl
int main()
{
    int i=10;
    while(i>=0){
        cout<<i<<endl;
        i--;
    }
    system("pause");
    return 0;
}
1.11 键入两整数,打印两整数间的所有整数
 #include <iostream>
 
 using std::cout;
 using std::cin;
 
 void print_range(int lo, int hi)
 {
     if (lo > hi)
         print_range(hi, lo);
     for (int i = lo; i != hi; ++i)
         cout << i << " ";
 }
 
 int main()
 {
    int low = 0, high = 0;
     cout << "please input two integers:\n";
     cin >> low >> high;
     print_range(low, high);
     return 0;
 }
2.41 略

3.2 标准库类型string

  1. string是可变长的字符序列,使用string类型必须首先包含string头文件,string定义在命名空间std中。
  2. string的初始化

     string s1;               // 默认初始化,s1是一个空字符串
     string s2 = s1;          // s2是s1的副本
     string s3 = "hiya";    // s3是该字符串字面值的副本
     string s4(10, ‘ c ‘);   // s4的类容是cccccccccc

    string s1
    默认初始化,s1是一个空串

    string s2(s1)
    s2是s1的副本

    string s2 = s1
    等价于s2(s1),s2是s1的副本

    string s3("value")
    s3是字面值“value"的副本,除了字面值最后的那个空字符外

    string s3 = "value"
    等价于s3("value"),s3是字面值”value"的副本

    string s4(n, ‘ c‘)
    把s4初始化为由连续n个字符c组成的串

  3. 使用等号初始化实际上是拷贝初始化,编译器直接把等号右侧的初始值拷贝到新的对象上,想反,不含等号的初始化是直接初始化化
    string s5 = "hiya";                 //拷贝初始化
    string s6("hiya");                  //直接初始化
    string s7(10, ‘ c‘);                 //直接初始化

  4. 用拷贝初始化对多个值进行初始化时,须创建一个临时对象用于拷贝
    string s8 = string(10, ‘c‘);          //可读性差
    等价于如下:
    string temp(10, ‘c‘);
    string s8 = temp;

  5. 一个类除规定初始化其对象方式外,还需定义在对象上所能执行的操作

  6. 有关string对象上的操作如下表:

    os<<s 将s写到输出流os当中,返回os
    is>>s 从is中读取字符串赋给s,字符串以空白分隔,返回is
    getline(is, s) 从is中读取一行赋给s,返回is
    s.empty() s为空赋返回true,否则返回false
    s.sinze() 返回s中的字符的个数
    s[n] 返回s中第n个字符的引用,位置n从0计起
    s1+s2 返回s1和s2连接后的结果
    s1=s2 用s2的副本代替s1中原来的字符
    s1==s2 如果s1和s2中所含的字符完全一样,则它们相等,返回true
    s1!=s2 如果s1和s2中所含的字符不一样,返回true
    <, <=, >, >= 利用字符在字典中的顺序进行比较,且对字母的大小写敏感

  7. 读写string,输入cin >> s;执行读取操作时,string对象会自动忽略开头的空白(空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到下一处空白为止。
    输入 cin >> s1 >> s2 >>……;执行读取多个输入

  8. 读取数量未知数量的string对象

C++primer(第五版)读书笔记&习题解答---CHAPTER 3

原文:http://www.cnblogs.com/tcent/p/5022068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!