好久没有看C++ primer plus 了,原来我还看了一点,今天感觉没有意思,简单翻看一下,感觉收获颇多,简单总结一下,怕以后忘了。
总结一:
#include <iostream>
int main (void) {
char ch;
std::cin >> ch;
std::cout << ch+1 << std::endl;
std::cout << ++ch << std::endl;
return 0;
}
std::cout << ch+1 与 std::cout << ++ch 输出是不一样的。
std::cout << ch+1 输出的是数字
std::cout << ++ch 输出的是字母
总结二:
||(OR) &&(AND) 运算方式
A || B
如果A的结果是TRUE,则不会判断B,如果A的结果为FALSE,才会判断B,如果B为FALSE,结果为FALSE。
A && B
如果A的结果是FALSE,判断结果为FALSE,B不会执行。如果A为TRUE,B才会执行。
总结一下: 对于|| 只要有一个为TRUE,他不会看以后的判断了,结果为TRUE,对于&&如果有一个为FALSE,他也不会看以后的判断了,结果为FALSE。
总结三:
||(OR) &&(AND) !(NOT)的优先级
! > && > ||
! 运算符的优先级高于所有的关系运算符和算术运算符
&& 运算符的优先级低于关系运算符但大于||运算符
|| 低于关系运算符
关系运算符 < 算术运算符
! (x > 5)和
! x > 5
是不一样的意思
总结四:
逻辑关系的另一种表示方式
&& and
|| or
! not
#include <iostream>
using namespace std;
int main (void) {
cout << "hello" and cout << " world" << endl;
cout << "c++ " or cout << "Primer" << endl;
not 0 && cout << "Primer" << endl;
return 0;
}
三目运算符。
const char x[2][20] = {"Jason","at your service"};
cosnt char * y = "Quillstone";
for (int i = 0;i <3;i++)
cout << ((i < 2) ? !i ? x[i] : y : x[1]);
请问输出什么呢?
这个我见过的够恶心的了,如果有谁比这个还恶心给我分享一下,这几天不想吃饭,想减肥。
结果为:Jason Quillstone at your service
总结六:
switch (char || int || enum)
switch语句中只能放这三种类型,其实只要里面是整数就可以运行吧。
总结七:
cin错误处理
#include <iostream>
using namespace std;
int main (void) {
int array[10];
for (int i = 0;i < 5;i++) {
while (! (cin >> array[i])){
cin.clear ();
while (cin.get () != '\n')
continue;
cout << "please enter a number: ";
}
}
for (int i = 0;i < 5;i++) {
cout << array[i] && cout << (i == 4 ? '\n' : ' ');
}
return 0;
}
如果你输入的不是数字,他会进行判断,cin>>array[i] 返回FALSE而且不会进入数组中,重新重载输入。之后清空缓冲区一直遇到'\n'重新输入。
这个操作让我想起了c语言中的 scanf ("%*[^\n]"); scanf ("%*c");。
总结八:
简单文件输入/输出流
对比: cout 和 文件输出
输出流
1.必须包含头文件iostream
2.头文件iostream定义了一个用处理输出的ostream类
3.头文件iostream声明了一个名为cout的ostream变量(对象)
4.必须指明命名空间std;
5.可以结合使用cout和运算符<<来显示各种类型的数据
文件输出
1.必须包含头文件fstream
2.头文件fstream定义了一个用于处理输出的ofstream类
3.需要声明一个或多个ofstream变量(对象), 并以自己喜欢的方式对其命名,条件是遵守命名规则。
4.必须指明命名空间。
5.需要将ofstream对象与文件关联起来。
6.使用完文件后,应使用方法close() 将其关闭
7.结合使用ofstream对象和运算符<<来输出各种类型的数据
#include <iostream>
#include <fstream>
using namespace std;
int main (void) {
ofstream outFile;
outFile.open ("resource.txt");
outFile << "hello world" << endl;
outFile.close ();
return 0;
}
cin和文件输入对比
输入流
1.必须包含头文件iostream
2.头文件iostream定义了一个用处理输入的istream类。
3.头文件iostream声明了一个名为cin的istream变量(对象)
4.必须指令命名空间std;
5.可以结合使用cin 和运算符>>来读取各种类型的数据
6.可以使用cin和eof,fail方法来判断输入是否成功。
7.对象cin本身被用作测试条件时,如果最后一个读取粗啊哦做成功,他将被转换为TRUE,否则被转换为FALSE
输入文件
1.必须包含头文件fstream
2.头文件fstream定义了一个用于处理输入的ifstream类。
3.需要声明一个或多个ifstream变量(对象), 并以自己喜欢的额方式对其进行命名,条件是常用的命名规则。
4.必须指明命名空间std;
5.需要将ifstream对象与文件关联起来。
6.使用完文件后。应使用close()方法将其关闭
7.可结合使用ifstream对象和运算符>>来读取各种类型的数据
8.可以使用ifstream对象和get() 方法来读取一个字符,使用ifstream对象和getline() 来读取一行字符。
9.可以结合使用ifstream和eof() fail() 等方法来判断输入是否成功.
10.ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,他将被转化为TRUE,否则被转换为FALSE
#include <iostream>
#include <fstream>
using namespace std;
int main (void) {
ifstream inFile;
inFile.open ("resource.txt");
char szLog[128];
inFile.getline (szLog, 128);
cout << szLog << endl;
inFile.close ();
return 0;
}
成功返回TRUE,失败返回FALSE,is_open 是c++中比较新的内容如果编译器不支持就是用good(),但是good() 在检查可能存在问题,没有is_open () 那么广泛
2)判断是否遇到EOF(读到了文件尾) eof ()
遇到返回TRUE,没有则返回FALSE
3)如果在最后一次读取操作中违反了类型不匹配的情况 fail
遇到返回TRUE,没有则返回FALSE
4)可能发生如文件损坏或硬件故障 bad()
遇到返回TRUE,没有则返回FALSE
5)判断是否有任何错误 good()
有错误返回FALSE,没有错误返回TRUE