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指针。