2020.4.22第一章C++与面向对象程序设计概述1
作者:互联网
课本:电子工业出版社《C++面向对象程序设计(第3版)》 杜茂康等著
头文件
传统 C++的头文件有 :iostream.h、fstream.h、string.h,stdio.h、ctype.h、math.h。
标准 C++对应的头文件有 :iostream、fstream、string,cstdio、cctype、cmath。 其中,stdio、ctype、math 是来源于 C 库文件。
输出控制符
设置浮点数的精度
- 所在头文件:iomanip
- 使用函数:setprecision(n)
- 使用范围:一直有效,直到再次用setprecision改变输出精度为止。
示例:
cout<<setprecision(2)<<3.1415926<<"\t"<<setprecision(3)<<3.1415926<<endl;
运行结果:
3.1 3.14
设置输出域宽和对齐方式
- 所在头文件:iomanip
- 使用函数:setw(n)
- 适用范围:仅对紧随其后的一个输出数据有效。
- 默认输出对齐方式:右对齐
示例:
cout<<"123456781234567890"<<endl;
cout<<setw(8)<<23.27<<setw(8)<<78<<endl;
cout<<setw(8)<<"Abc"<<78<<endl;
运行结果:
123456781234567890
23.27 78
Abc78
设置对齐方式
- 所在头文件:iomanip
- 使用函数:setiosflags()与resetiosflags()
- 对齐:
- 左对齐:setiosflags(ios::left)
- 右对齐:setiosflags(ios::right)
- 对齐:
- 适用范围:一直有效直到下一个setiosflags或者resetiosflags出现。
示例:
cout<<"123456781234567812345678"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<456<<setw(8)<<123<<endl;
cout<<setiosflags(ios::right)<<setw(8)<<123<<endl;
运行结果:
123456781234567812345678
456 123
123
数制基数
- 在输入数据时:
- 十进制:cin>>直接输入数据本身
- 十六进制:cin>>hex>>在要输入的数据前加入0x或者0X,如0x1A
- 八进制:cin>>oct>>在输入的数据前加0,如043
- 在输出数据时:
- 十进制:dec<<
- 十六进制:hex<<
- 八进制:oct<<
- 作用范围:一直有用直到下一个进制命令出现
示例:
int x = 34, y, z;
cout << hex << x << "\t"<<dec << x<<"\t" << oct << x << endl;
cin >> hex >> y>> oct >> z;
cout <<dec<< y <<"\t" << z<<endl;
运行结果:
22 34 42
0x11↙ 011↙
17 9
关于string
string对象的定义和初始化
- 所在头文件:string
定义形式
string c;
string c1("Chloe-fengtt");
string c2 = c1;
string s[10]; //能保存十个字符串
string s(5,'c'); //即为"ccccc"
赋值
赋值可以不用strcpy()函数。
string s1("Chloe");
string s2("feng-tt");
s1 = s2;
连接
可以用"+"和"+="。
string s1("Chloe");
string s2("feng-tt");
string s3;
s3 = s1 + "," + s2;
s1 += "," + s2;
输入输出
可以直接使用cin,cout。
大小比较
- 使用比较运算符
- 从第一位开始,依次比较每一位的ASCII码大小,如果出现某一位不相等,就以这一位的大小来确定字符串的大小。
如“ace”与“abc”,c>b,故“ace”>“abc”。
- 如果每一位都相等,只是长度不同,则较长者大。
如"computer"和"comp","computer">"comp"。
数据输入的典型问题
输入数据类型不匹配引发的问题
如何为变量输入空白字符?
- 用get()函数输入空白字符
- 此空白符包括tab,空格键,回车键等方式输入的空白格
cin.get(char c);
- 用getline()函数输入包含空白的长字符串
- 结束输入的方法:
- 输入流中的字符数多余getline()指定的个数,它从输入流中读够了n-1个字符。
- 遇到指定的结束符号
- 结束输入的方法:
cin.getline(char *s1,int n,char = "\n"); //c用来保存输入的数据,n指字符串长度,第三个参数指定了提取数据的结束符(默认“\n”)
getline()没有读取输入的数据就结束了?
-
输入流中的字符多于getline()所需要的字符数
- cin.clear函数:
对我来讲还是有点深奥,就不摘了:cin.clear()函数
- cin.ignore函数:
cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。
#include<iostream>
using namespace std;
void main(){
char s1[100];
char s2[10];
cout << "use getline input s1: "; // L1
cin.getline(s1, 11); // L2
cout << "input s2: " << endl; // L3
// cin.clear(); // L4*
// cin.ignore(1024,'\n'); // L5*
cin.getline(s2, 6); // L6
cout << "s1=" << s1 << endl; // L7
cout << "s2=" << s2 << endl; // L8
}
- getline()提取了上一条语句遗留的“\n”结束符,不再读入数据的问题
- getchar()、get()函数和ignore()都可以解决问题。
标签:字符,string,22,2020.4,cout,cin,C++,输入,函数 来源: https://www.cnblogs.com/Chloe-fengtt/p/12755917.html