课本:电子工业出版社《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<
运行结果:
3.1 3.14
设置输出域宽和对齐方式
所在头文件:iomanip
使用函数:setw(n)
适用范围:仅对紧随其后的一个输出数据有效。
默认输出对齐方式:右对齐
示例:
cout<
cout<
cout<
运行结果:
123456781234567890
23.27 78
Abc78
设置对齐方式
所在头文件:iomanip
使用函数:setiosflags()与resetiosflags()
对齐:
左对齐:setiosflags(ios::left)
右对齐:setiosflags(ios::right)
适用范围:一直有效直到下一个setiosflags或者resetiosflags出现。
示例:
cout<
cout<
cout<
运行结果:
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"<
cin >> hex >> y>> oct >> z;
cout <
运行结果:
223442
0x11↙ 011↙
179
关于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
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()都可以解决问题。