例题
#include <iostream> // 使用该头文件完成输入输出
int main()
{
std::cout << "Enter two numbers:" << std::endl; // 输出字符串 Enter two numbers: ,并换行
int v1 = 0, v2 = 0; // 定义 v1 、 v2 两个变量,用以保存输入
std::cin >> v1 >> v2; // 接收用户输入
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl; //输出 v1+v2 的计算结果
return 0;
}
知识点
一、
最常见的库“iostream”,包含“istream”和“ostream”(个人理解i为input,o为output),分别表示输入流和输出流。
二、
istream类型的对象cin为标准输入
ostream类型的对象cout为标准输出
ostream类型的对象cerr为标准错误
ostream类型的对象clog用来输出程序运行时的一般性信息
三、
关于std::
std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准库中的函数或者对象都要用std来限定。命名空间可以避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。
在使用标准库文件iostream时,要写上std::,
而使用非标准库文件ostream.h,不用写
四、
输出运算符 <<
左侧的运算对象必须是一个ostream对象,右侧的运算对象是要打印的值。此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果旧石器左侧运算对象。即,计算结果就是我们写入给定值的那个ostream对象。
类似"Enter two numbers:"为字符串字面值常量
std::endl为操纵符的特殊值,效果是结束当前行,并将于设备关联的缓冲区中的内容刷到设备中。
五、
输入运算符 >>
接收一个istream作为其左侧运算对象,接受一个对象作为右侧运算对象。从给定的istream读入数据,并存入给定对象中,返回其左侧运算对象作为其计算结果。
练习题
1.2节练习
练习1.3:
编写程序,在标准输出上打印Hello,world。
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
练习1.4:
我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。
#include <iostream>
int main()
{
std::cout << "Enter two number:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 * v2 << std::endl;
return 0;
}
练习1.5:
我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of ";
std::cout << v1;
std::cout << " and ";
std::cout << v2;
std::cout << " is ";
std::cout << v1 + v2;
std::cout << std::endl;
return 0;
}
练习1.6:
解释下面程序片段是否合法。
std::cout <<"The sum of " << v1;
<<" and " << v2;
<<" is " <<v1 + v2 <<std::endl;
如果程序是合法的,它输出什么?如果程序不合法,原因何在?应该如何修正?
不合法,因为第二排和第三排的第一个输出运算符,左侧没有ostream对象接收。可以删除第一排和第二排最后的 ; (结束符)或者在第二排和第三排最前面添加std::cout