C++ Primer学习笔记 - 2 - 输入输出

小节主要内容

  1. C++没有定义任何IO语句,而是使用了标准库来提供IO机制,iostream就是其中的一个库,包含 istream和ostream。
  2. iostream库中包含几个输入输出对象:cin、cout、clog、cerr。
  3. 使用iostream库前,要使用 #include对iostream库进行引用,通常写在源文件的开始位置——源文件即源代码文件,这在上一节中有提到。
  4. <<是输出运算符,格式是A << B,作用是将它右边的值写到左边的对象中,左边的值必须是一个ostream对象;完成运算后,返回左边的值,因此,可以连续使用输出运算符进行输入。
  5. std::endl是一个被称为操纵符(manipulator)的特殊值,写入它的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中——即结束本次流的输入,完成这个操作后,表示本次输出完成。
  6. ::是作用域运算符,在74页有详细的说明:从操作符左侧名字所示的作用域中寻找右侧那个名字。
  7. 初始化(initialize)变量,在变量创建的同时为它赋予一个值——这个问题是我最近遇到的一个BUG特别需要注意的地方,由于C++不会在声明时提供默认的值,所以一定要特别注意初始化一个值,否则可能在这个变量上发现各种奇怪的值。
  8. >>是输入运算符,与输出运算符类似,它的左边必须是一个istream对象,右边是一个要被存入值的对象,完成操作后返回左边的istream对象;同样的,它也可以连续连接输出运算符。
  9. 标准库中有不同版本(我觉得可能是受限于术语,这里并没有用更精确的词来描述)的输入输出运算符,在连续连接时,可以连接不同类型的运算对象。

习题

习题1.3

题干: 编写程序,在标准输出上打印Hello,World。

终于来了,HelloWorld——

#include <iostream>
int main()
{
	std::cout << "Hello" <<"World"<<std::endl;
}

兴致冲冲地写下了这几行,实现了输出:

在这里插入图片描述
这里有一个小插曲,在编译时可能会报这两个错误:

fatal error C1083: 无法打开包括文件: “corecrt.h”: No such file or directory
fatal error C1034: iostream: 不包括路径集

只要分别把VS安装路径下的这几个路径配置进环境变量的INCLUD字段即可,注意可能根据VS版本和安装路径的不同而有区别。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt

习题1.4

编写程序使用乘法运算符*来打印两个数的积
其实就是简单的输出输出应用,非常简单:

#include <iostream>
int main()
{
	int a = 0;
	int b = 0;
	std::cin >> a >> b ;
	std::cout << "输入的两个值为:"<< a<<"和"<<b<<std::endl;
	std::cout << "积为:" << a*b<<std::endl;
}

`在这里插入图片描述

习题1.5

重写程序,将每个运算对象的打印操作放在一条独立的语句中

将每个句子拆分即可,注意每一行的分号。

#include <iostream>
int main()
{
   int a = 0;
   int b = 0;
   std::cin >> a ;
   std::cin >> b ;
   std::cout << "输入的两个值为:";
   std::cout << a;
   std::cout<<"和";
   std::cout<<b;
   std::cout << "积为:"; 
   std::cout<< a*b;
   std::cout<<std::endl;
}

输出如下:
在这里插入图片描述

这里有一个地方要注意,改写的代码里我少用了一个std::endl,能看出来的是,输出也比之前少了一个换行,说明操纵符具有换行效果。

习题1.6

解释下面程序片段是否合法:

std::cout << "The sum of " << v1;
		  <<" and " << v2;
		  <<" is " << v1+v2 << std::endl;

如果程序是合法的,它输出什么?如果程序不合法,原因何在?应如何修正?

毫无疑问,是不合法的,因为输出运算符<<需要两个运算对象,在第二行和第三行里,最左边的输出运算符的左边都缺少了一个ostream的对象。
修改方法:只需要在第二行和第三行各加上一个std::cout即可——或者把前两行的结尾分号去掉。

std::cout << "The sum of " << v1;
std::cout <<" and " << v2;
std::cout<<" is " << v1+v2 << std::endl;
//或
std::cout << "The sum of " << v1
		  <<" and " << v2
		  <<" is " << v1+v2 << std::endl;

结束

编译中遇到的问题最多也最耗时间,习题和代码反而不需要太久。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值