C++输入输出
c++预处理器和iostream文件
#include<iostream>
using namespace std;
使用cin和cout进行输入输出必须包含文件iostream
头文件名
c语言和c++的区别
- c语言的传统是,头文件使用扩展名h,将其作为一种通过名称表示文件类型的简单方式。
- c++头文件则没有扩展名,c++程序可以使用老式的保留扩展名的文件。
- 有些c头文件被转化为c++头文件,这些文件被重新命名,去掉扩展名h,并在文件名称前面加上前缀c(表明来自c语言)例如:c++版本的math.h为cmath
名称空间
因为使用头文件时没有扩展名h所以应使用下面的名称空间编译指令来使iostream中的定义对程序可用。
using编译指令
- 简单理解,一般我们使用的名称空间是std
- 使用using编译指令使得头文件中的定义对程序可用
- 可以是部分也可以是全部可用
- 这里的可用指的是可以不用那么复杂的在编码时还加上std::。
using namespace std;//表示全部可用
using std::cout;//表示使用cout这个可以
全部可用是一种偷懒的方法,在大型项目中有潜在问题。更好的方法是,只使所需的名称可用,这可以通过使用using声明来实现,也就是上面的表示cout可用
使用cout进行输出
- cout是一个预定义对象,知道如何显示字符串、数字和单个字符等
- 从概念上看,输出是一个流,即从程序流出一系列字符。
- cout对象表示这种流,其属性是在iostream文件中定义的。
- cout的对象属性包括一个插入运算符(<<),它可以将其右侧的信息插入到流中。
cout<<"Come up and C++ me some time.";
它将字符串插入到输出流中
int carrots;//定义
carrots=25;//赋值
cout<<carrots;//输出
输出25
cout与printf不同,printf必须要有格式控制符来控制输出的内容的类型,而cout能够识别类型,不用格式控制符来告诉其该输出什么类型。
cout明显更智能灵活好用。
初识运算符重载
通过上面可以注意到插入运算符看上去就像按位左移运算符<<。这是一个运算符重载的例子。
通过重载,同一个运算符将有不同的含义。编译器通过上下文来确定运算符的含义。
c本身也有一些运算符重载的情况。例如,&符号既表示地址运算符,又表示按位AND(与)运算符。
控制符endl
endl是一个特殊的C++符号,表示:重起一行。即在输出流中插入endl将导致屏幕光标(即鼠标)移到下一行开头。
- 注意endl是要另起一个cout插入输出流
- 诸如endl等对于cout来说有特殊含义的特殊符号被称为控制符。
cout<<"ok";
cout<<endl;
cout<<"yes";
换行符
C++还提供了另一种在输出中指示换行的旧式方法:C语言符号\n:
换行符和控制符用谁好
很重要的区别:就是当我们插入输出流的内容为字符串时使用换行符,因为不用单独打双引号,这样输入量少,而其他情况使用控制符endl
!cout
通过上图可以看出,即使输出不同类别内容也可以使用同一个cout,只需在不同类别前均加上cout对象属性<<将需要插入输出流的内容插入即可
cout<<"what"<<endl;
cout<<"yes";
注意<<前不需要加分号,第一个cout插入输出流语句没结束呢,分号是意味着语句的结束才要加的。
C++源代码风格
声明语句和变量
声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称。
int carrots;
在这个例子中,程序将创建一个名为carrots的变量,它可以存储整数。它是变量,可以通过赋值来改变其存储的值。
该声明语句叫做定义声明语句,简称为定义。这意味着它将导致编译器为变量分配内存空间。
- 通常声明不一定时定义
还可能有引用声明,这些声明命令计算机使用在其他地方定义的变量。
- 提示:对于声明变量,C++的做法是尽可能在首次使用变量前声明它。这样,就不必再程序中到处查找以了解变量的类型。但这样也有缺点,没有把所有的变量名放在一起,因此无法对函数使用了哪些变量一目了然。
赋值
赋值语句将值赋给存储单元。例如,下面的语句将整数25赋给变量carrots表示的内存单元
carrots=25;
carrots=min=23;
可以连续使用赋值运算符=,赋值将从右向左进行。
cin输入
与cout对应的用于输入的对象