C++ Primer Plus 学习笔记(第六章)
1,if else语句
2,逻辑or运算符
3,字符函数库cctype4,switch和if else
5,break和continue语句
6, C++也有goto语句
7, 写入到文本文件
8, 读取文本文件
1,if else语句
2,逻辑or运算符
i++ <6 || i==j
由于||的优先级运算符低,因此不需要在这些表达式中使用括号。||运算符是个顺序点,也就是说,先修改左边的值,再对右边的值进行判断(C++的说法是,运算符左边的子表达式先于右边的子表达式)。
假设i原来的值是10,则在对i和j进行比较时,i的值将为11.另外,如果左边的值为true,C++将不会去判定右边的表达式的值。因为只要一个表达式为true,则整个表达式为true。
3,字符函数库cctype
Isalnum() 如果参数是字母数字,即字母或数字,该函数返回true。
Isalpha() 如果参数是字母,该函数返回true。
Iscntrl()如果参数是控制字符,该函数返回true。
Isdigit() 如果参数是数字0-9,该函数返回true。
Isgraph() 如果参数是除空格之外的打印字符,该函数返回true。
Islower() 如果参数是小写字母,该函数返回true。
Isprint() 如果参数是打印字符(包括空格),该函数返回true。
Ispunct() 如果参数是标点符号,该函数返回true。
Isspace() 如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,该函数返回true。
Isupper() 如果参数是大写字母,该函数返回true。
Isxdigit() 如果参数是十六进制数字,即0-9、a-f或A-F,该函数返回true。
Tolower() 如果参数是大写字母,则返回其小写,否则返回该参数。
Toupper() 如果参数是小写字符,则返回其大写,否则返回该参数。
4,switch和if else
switch并不是为处理取值范围而设计的,switch语句中的每一个case标签都必须是一个单独的值。另外,这个值必须是整数(包括char)。因此,switch无法处理浮点测试。另外,case标签值还必须是常量。如果选项涉及取值范围、浮点测试或两个变量的比较,则应使用if else语句。
如果既可以使用if else语句,也可以使用switch语句,则当选项不少于3个时,应使用switch语句。
5,break和continue语句
break和continue语句都使程序能够跳过部分代码。可以在switch语句或任何循环中使用break语句,是程序跳到switch或循环后面的语句处执行。Continue语句用于循环中,让程序跳过循环体中余下的代码,并开始下一轮循环。
虽然continue语句导致该程序跳过循环体的剩余部分,但不会跳过循环的更新表达式。在for循环中,continue语句使程序直接跳到更新表达式处,然后跳到测试表达式处。然而,对于while循环来说,continue将使程序直接跳到测试表达式处,因此,while循环体中位于continue之后的更新表达式都将被跳过。
6, C++也有goto语句
Goto paris;
…
Paris:…
在大多数情况下(有些人认为,在任何情况下),使用goto语句不好,而使用结构化控制语句(如ifelse,switch,continue等)来控制程序的流程。
7, 写入到文本文件
a,必须包含头文件iostream。
b,头文件iostream定义了一个用处理输出的ostream类。
C,头文件iostream声明了一个名为cout的ostream变量(对象)。
D,必须指出名称空间std:例如,为引用元素cout和endl,必须使用编译指令using或前缀std::。
文件输出与此极其相似
A, 必须包含头文件fstream。
B,头文件fstream定义了一个用于处理输出的ofstream类。
c,需要声明一个或多个ofstream变量(对象),并以自己喜欢的方式对其进行命名,条件是遵守常用的命名规则。
D, 必须指出命名空间std;例如,为引用元素ofstream,必须使用编译指令using或前缀std::。
E, 需要将ofstream对象与文件关联起来。为此,方法之一是使用open()方法。
F, 使用完文件后,应使用方法close()将其关闭。
G, 可结合使用ofstream对象和运算符<<来输出各种类型的数据。
8, 读取文本文件
A, 必须包含头文件iostream。
B, 头文件iostream定义了一个用处理输入istream类。
C, 头文件iostream声明了一个名为cin的istream变量(对象)。
D, 必须指出名称空间std;例如,为引用元素cin,必须使用编译指令using或前缀std::。
E, 可以结合使用cin和运算符>>来读取各种类型的数据。
F, 可以使用cin和get()方法来读取一个字符,使用cin和getline()来读取一行字符。
G, 可以结合使用cin和eof()、fail()方法来判断输入是否成功。
H, 对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将转换为布尔值true,否则被转换为false。
文件输出与此极其相似
A, 必须包含头文件fstream。
B, 头文件fstream定义了一个用于处理输入的ifstream类。
C, 需要声明一个或多个ifstream变量(对象),并以自己喜欢的方式对其进行命名,条件是遵守常用的命名规则。
D, 必须指出名称空间std;例如,为引用元素ifstream,必须使用编译指令using或前缀std::。
E, 使用完文件后,应使用close()方法将其关闭。
F, 可结合使用ifstream对象和运算符>>来读取各种类型的数据。
G, 可以使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getlien()来读取一行字符。
H, 可以结合使用ifstream和eof()、fail()等方法来判断输入是否成功。
I, Ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则,被转换为false。
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
charautomobile[50];
intyear;
doublea_price;
doubled_price;
ofstream outFile;
outFile.open("carinfo.txt");
cout<<"enterthe make and model of automobile";
cin.getline(automobile,50);
cout<<"enterthe model year:";
cin>>year;
cout<<"enterthe original asking price:";
cin>>a_price;
d_price=0.913*a_price;
cout<<fixed;
cout.precision(2);
cout.setf(ios_base::showpoint);
cout<<"makeand model:"<<automobile<<endl;
cout<<"year:"<<year<<endl;
cout<<"wasasking $"<<a_price<<endl;
cout<<"nowasking $"<<d_price<<endl;
outFile<<fixed;
outFile.precision(2);
outFile.setf(ios_base::showpoint);
outFile<<"makeand model:"<<automobile<<endl;
outFile<<"year:"<<year<<endl;
outFile<<"wasasking $"<<a_price<<endl;
outFile<<"nowasking $"<<d_price<<endl;
outFile.close();
return0;
}