C++primerplus书摘2(第五到第八章)

1.字符函数

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cctype>
 6 using namespace std;
 7 /*
 8 需要添加 #include<cctype>
 9 isalnum() 如果参数是字母数字,即字母数字,该函数返回>0否则为0
10 isalpha() 如果参数是字母,该函数返回>0否则为0
11 iscntrl() 如果是控制字符,返回>0否则为0
12   控制字符是不可打印字符。可打印的字符是可以从键盘上输入的字符
13 第0~32号及第127号(共34个)是控制字符或通讯专用字符。
14 如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)等
15 通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等
16 
17 isdigit() 如果参数是0~9,返回true
18 isgraph() 如果参数除空格以外的打印字符,返回>0否则为0
19 islower() 如果参数是小写字母,返回true
20 isprint() 如果参数是打印字符包括空格,返回true
21 ispunct() 如果参数是标点符号,返回true
22 isspace() 如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符,返回true
23 isxdigit() 如果参数是十六进制数字,返回true
24 tolower() 如果参数是大写字符,则返回其小写,否则返回该参数
25 toupper() 如果参数是小写字符,则返回其大写,否则返回该参数
26 */
27 int main()
28 {
29    cout<<isalnum('+')<<" "<<isalnum('9')<<endl;
30    cout<<isalpha('a')<<" "<<isalpha('8')<<endl;
31    cout<<iscntrl('\0')<<" "<<iscntrl('a')<<endl;
32    cout<<isdigit('a')<<" "<<isdigit('0')<<endl;
33    cout<<isgraph(' ')<<" "<<isgraph('1')<<" "<<isgraph('\1')<<endl;
34    cout<<islower('a')<<" "<<islower('A')<<endl;
35    cout<<isxdigit('A')<<" "<<isxdigit('1')<<endl;
36    cout<<toupper('a')<<" "<<toupper(1)<<" "<<toupper('1')<<endl;
37    cout<<tolower('A')<<" "<<tolower('1')<<endl;
38     return 0;
39 }

 

2.简单文件的输入输出

写入到文件

 1)必须包含头文件iostream,头文件iostream 定义了一个用处理输出的ostream类,声明了一个名为cout的ostream变量(对象)

 2)必须指明名称空间std;

 3)必须包含头文件fstream,定义了一个用于处理输出的ofstream类,需要声明一个或多个ofstream变量(对象)

 4)必须指明名称空间std

 5)需要将ofsream对象与文件关联起来,方法之一是使用open(),使用完文件后,应使用方法close()将其关闭

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<fstream>
 6 using namespace std;
 7 char a[50];
 8 int year;
 9 double aprice;
10 double bprice;
11 int main()
12 {
13    ofstream outFile;
14    outFile.open("key.txt");
15    cin.getline(a,50);
16    cout<<"aprice:"<<endl;
17    cin>>aprice;
18    cout<<"bprice:"<<endl;
19    cin>>bprice;
20    outFile<<"Make and model:"<<a;
21    outFile<<"aprice:"<<aprice;
22    outFile<<"bprice:"<<bprice;
23    outFile.close();
24     return 0;
25 }

读取文件

 1)头文件iostream定义了一个用处理输入的istream类

 2)头文件iostream声明了一个名为cin的istream变量

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<fstream>
 6 #include<cstdlib>
 7 using namespace std;
 8 char a[50];
 9 int main()
10 {
11     ifstream inFile;
12     inFile.open("key.txt");
13     if(!inFile.is_open())
14     {
15         cout<<"cannot open the file"<<a<<endl;
16         cout<<"program terminating"<<endl;
17         exit(EXIT_FAILURE);
18     }
19     double value;
20     double sum=0.0;
21     int num=0;
22    23     while(inFile.good())
24     {
25         ++num;
26         sum+=value;
27         inFile>>value;
28     }
29     if(inFile.eof())
30     cout<<"end of file reached."<<endl;
31     else if(inFile.fail())
32         cout<<"input terminated by data mismatch"<<endl;
33     else
34         cout<<"input terminated for unknown reason"<<endl;
35     if(num==0)
36     cout<<"no data processed"<<endl;
37     else
38     {
39         cout<<num<<endl;
40         cout<<sum<<endl;
41         cout<<sum/num;
42     }
43     inFile.close();
44     return 0;
45 }


3.数组与指针

arr[i]=*(arr+i);

&arr[i]=arr+i;

 

4.arr2[r][c]

arr2 指针

arr2+r 指向arr2+r指针

*(arr2+r) 即arr2[r]

*(arr2+r)+r 即arr2[r]+2

*((arr2+r)+c) 即arr2[r][c]

 

5.int data[3][4]={{1,2,3,4},{5,6,7,8,9},{2,4,6,8}};

正确的原型 int sum(int (*ar2)[4],int size); int sum(int ar2[][4],int size);

声明一个4个指向int的指针组成的数组,而不是由4个int组成的数组的指针;指针类型指定了列数,这就是没有将列数作为独立的函数参数进行传递的原因。

 

6.const数据或非const数据的地址赋给指向const指针,但只能将非const数据的地址赋给非const指针。

 

posted @ 2019-07-16 18:41  zuiaimiusi  阅读(195)  评论(0编辑  收藏  举报