课本:电子工业出版社《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()都可以解决问题。