C++ primer 开始
序言
- 像编译器一样思考C++语言
- 全面了解C++语言,但是工程中可能只会使用它的一个子集
我觉得, C++的特点在于它很好地结合了内存管理(与计算机底层密切相关), 代码可读性和可扩展性。Python重在可读性, 让人觉得行云流水, 但是它与底层的关系没有C++那么直观。
1.1编写一个C++程序
//prog1.cpp
int main(){
return 0;//通常返回0为程序正常运行, 返回非0数(通常为-1)为程序异常
//异常的含义由系统定义,通常用来指出错误类型
}
#程序的编译: 编译器程序名字 + 编译器程序参数 + 可执行文件名称 + 源文件
g++ -o prog1 prog1.cpp
1.2初识输入输出
C++利用一个标准库 iostream 来提供IO机制,其包含两个基础类型istream和ostream,分别表示输入流和输出流。
为了处理输入,常用名为cin的istream类型的对象
为了处理输出,常用名为cout的ostream类型的对象;还有cerr用来输出警告和错误消息。
还有clog用以输出程序运行时的一般性信息。
#include <iostream>
using namespace std;
void io(){
cout<< "Hello, io!!" <<endl
<< "enter two numbers: "<<endl;
int x = 0, y = 0;
cin>> x>> y;
cout<< "Sum of "<< x<<" and "<< y<<" is "
<< x+y<<endl;
cerr<< "wrong, man!!"<<endl;
clog<< "it's clog, man!!"<<endl;
}
int main(){
io();
return 0;
}
1.4控制流
控制流包含while, for, if
这里想重点说一下读取数量不定的数据:
while循环会检测流的状态,遇到**文件结束符(或输入错误)**时候,istream对象的状态会变为无效,无效则为假。在Windows中是输入ctrl+z, 然后按Enter或者Return;在Unix,包括Mac中,文件结束符是用ctrl+D。
void io2(){
cout<< "Hello, io2!!" <<endl;
int sum=0, value=0;
while(cin>>value){
sum += value;
}
cout<<"sum is "<<sum<<endl;
}