《Visual C++ 开发从入门到精通》——2.4 输入/输出基础

2.4 输入/输出基础

知识点讲解:光盘视频PPT讲解(知识点)第2章输入输出基础.mp4

C++并没有直接定义进行输入或输出(I/O)的任何语句,而是由标准库(Standard Library)提供,I/O库为程序员提供了大量的工具。然而对于许多应用来说(包括本书的例子),编程者只需要了解一些基本的概念和操作即可。本书中的大多数例子都使用了处理格式化输入和输出的iostream库。iostream库的基础是两种命名为istream和ostream的类型,分别表示输入流和输出流。流是指要从某种I/O设备上读入或写出的字符序列。术语“流”试图说明字符是随着时间顺序生成或消耗的。本节将简要讲解C++实现输入和输出的基本知识。

2.4.1 标准输入与输出对象

标准库定义了4个I/O对象。处理输入时使用命名为cin(读作see-in)的istream类型对象。这个对象也叫做标准输入(Standard Input)。处理输出时使用命名为cout(读作see-out)的ostream类型对象,这个对象也称为标准输出(Standard Output)。标准库还定义了另外两个ostream对象,分别命名为cerr和clog(分别读作“see-err”和“see-log”)。cerr对象又叫做  标准错误(Standard Error),通常用来输出警告和错误信息给程序的使用者。而clog对象用于产生程序执行的一般信息。

在一般情况下,系统将这些对象与执行程序的窗口联系起来。这样,当我们从cin读入时,数据从执行程序的窗口读入,当写到cout、cerr或clog时,输出至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或输出流的方法。利用重定向可以将这些流与所选择的文件联系起来。

2.4.2 一个使用I/O库的程序

到目前为止,我们已经明白如何编译与执行简单的程序了,虽然那个程序什么也不做。接下来先看一看应该如何实现把两数相加的处理代码。我们可以使用I/O库来扩充main程序,实现输出用户给出的两个数的和的功能,具体代码如下。

#include <iostream>
int main()
{
    std::cout << "输入两个数字:" << std::endl;
    int v1, v2
    std::cin >> v1 >> v2;
    std::cout << "它们的和是" << v1 << " and " << v2
                << " is " << v1 + v2 << std::endl;
    return 0;
}```
在上述代码中,首先在用户屏幕上显示提示语“输入两个数字:”,输入后按Enten键,将输出两者的和。程序的第一行是一个预处理指示。
`
#include <iostream>`
该行代码的功能是告诉编译器要使用iostream库。尖括号里的名字是一个头文件。当程序使用库工具时必须包含相关的头文件。#include指令必须单独写成一行——头文件名和#include必须在同一行。通常,#include指令应出现在任何函数的外部。而且习惯上,程序的所有#include指示都在文件开头部分出现。

1.写入到流
main函数体中第一条语句执行了一个表达式(Expression)。C++中,一个表达式由一个或几个操作数和通常是一个操作符组成。该语句的表达式使用输出操作符(<<操作符),在标准输出上输出如下提示语。

`std::cout << "输入两个数字:" << std::endl;`
上述代码用了两次输出操作符,每个输出操作符实例都接受两个操作数:左操作数必须是ostream对象,右操作数是要输出的值。操作符将其右操作数写到作为其左操作数的ostream对象。

在C++中,每个表达式产生一个结果,通常是将运算符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值。也就是说,输出操作返回的值是输出流本身。

既然输出操作符返回的是其左操作数,那么我们就可以将输出请求连接在一起。输出提示语的那条语句等价于。
`
 (std::cout << "输入两个数字:") << std::endl;`
因为(std::cout << "Enter two numbers:")返回其左操作数std::cout,这条语句等价于下面的代码。

std::cout << "输入两个数字:";
std::cout << std::endl;`
endl是一个特殊值,称为操纵符(Manipulator),将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区(Buffer)。通过刷新缓冲区,保证用户立即看到写入到流中的输出。

图像说明文字

注意:程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致程序错误推断崩溃位置。
2.使用标准库中的名字
细心的读者会注意到这个程序中使用的是std::cout和std::endl,而不是cout和endl。前缀std::表明cout和endl是定义在命名空间(Namespace)std中的。命名空间使程序员可以避免与库中定义的名字相同引起的无意冲突。因为标准库定义的名字是定义在命名空间中,所以我们可以按自己的意图使用相同的名字。

标准库使用命名空间的副作用是,当我们使用标准库中的名字时,必须显式地表达出使用的是命名空间std下的名字。std::cout的写法使用了作用域操作符(Scope Operator,::操作符),表示使用的是定义在命名空间std中的cout。

3.读入流
在输出提示语后,将读入用户输入的数据。先定义两个名为v1和v2的变量来保存输入。
`
int v1, v2;`
将这些变量定义为int类型,int类型是一种代表整数值的内置类型。这些变量未初始化,表示没有赋给它们初始值。这些变量在首次使用时会读入一个值,因此可以没有初始值。下一条语句读取输入。
`
std::cin >> v1 >> v2;`
输入操作符(>>操作符)的行为与输出操作符相似,功能是接受一个istream对象作为其左操作数,接受一个对象作为其右操作数,它从istream操作数读取数据并保存到右操作数中。像输出操作符一样,输入操作符返回其左操作数作为结果。由于输入操作符返回其左操作数,我们可以将输入请求序列合并成单个语句。换句话说,这个输入操作等价于下面的代码。

std::cin >> v1;
std::cin >> v2;```
输入操作的效果是从标准输入读取两个值,将第一个存放在v1中,第二个存放在v2中。

4.完成程序
剩下的就是要输出结果。

std::cout << "它们的和是" << v1 << " and " << v2

        << " is " << v1 + v2 << std::endl;```

上述代码虽然比输出提示语的语句长,但是在概念上没什么区别,功能是将每个操作数输出到标准输出。有趣的是操作数并不都是同一类型的值,有些操作数是字符串字面值。例如,下面的字符串。

"它们的和是"
其他是不同的int值,如v1、v2以及对算术表达式v1 + v2求值的结果。iostream库定义了接受全部内置类型的输入/输出操作符版本。

图像说明文字

注意:在编写C++程序时,大部分出现空格符的地方,可用换行符代替。这条规则的一个例外是字符串字面值中的空格符不能用换行符代替。另一个例外是换行符不允许出现在预处理指示中。

时间: 2024-09-21 13:53:34

《Visual C++ 开发从入门到精通》——2.4 输入/输出基础的相关文章

《Visual C++ 开发从入门到精通》——导读

前言 Visual C++ 开发从入门到精通 从你开始学习编程的那一刻起,就注定了以后要走的路:从编程学习开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在职位顶峰的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码,寻找并解决Bug.不停测试程序和修改项目的经历:不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获. 第1章 第1章 Visual C++ 6.0的最初印象 1.1 Visual C++

《Visual C++ 开发从入门到精通》——第2章 C++的基本语法2.1 面向对象

第2章 C++的基本语法 Visual C++ 开发从入门到精通 学习Visual C++ 6.0开发知识,需要具备C++语言的基本知识,特别是语法知识.C++是继C语言之后的又一门受程序员欢迎的编程语言,它不但是C的加强版,而且吸取了传统汇编语言的优点,开创了全新的面向对象语言世界.从此,软件领域彻底进入面向对象时代.由此可以看出,C++的最重要特征是:面向对象.语法是任何一门编程语言的基础,一个程序员只有在掌握了语法知识后,才能根据语法规则编写出项目需要的代码.本章将详细介绍C++语言的基本

《Visual C++ 开发从入门到精通》——2.2 分析C++的程序结构

2.2 分析C++的程序结构 知识点讲解:光盘视频PPT讲解(知识点)第2章分析C++的程序结构.mp4 程序结构即程序的组织结构,它包括语句结构.语法规则和表达式,其内容包含代码组织结构和文件组织结构.在C++开发中,我们必须严格遵循这些规则,才能编写出高效.易懂的程序. 2.2.1 从一段代码看C++程序结构 先看如下代码. //这是一个演示程序,它从命令行读入一个整数,然后加1再输出 #include <stdafx.h> #include <iostream.h> int

《Visual C++ 开发从入门到精通》——1.4 技术解惑

1.4 技术解惑 Visual C++ 6.0开发技术博大精深,能够用于多个领域,因此,一直深受广大程序员的喜爱.作为一名初学者,肯定会在学习过程中遇到很多疑问和困惑.为此,在本节的内容中,作者将自己的心得体会传授给大家,帮助读者解决困惑. 1.4.1 学习C++是否有用 下面就介绍一下C++的优势,以增强大家学习的信心. (1)C++是一门全能的语言 首先我们先要知道C++是一门什么语言,简单来说,C++是一门接近于全能的语言.为什么说是接近呢?因为C++有一门语言是无法取代的,那就是汇编.再

《Visual C++ 开发从入门到精通》——1.2 Visual C++ 6.0开发环境

1.2 Visual C++ 6.0开发环境 知识点讲解:光盘\视频\PPT讲解(知识点)\第1章\Visual C++ 6.0开发环境介绍.mp4 学习任何一门程序语言,都需要遵循图1-12所示的过程.本节将介绍Visual C++ 6.0集成开发环境的基本知识. 图1-12 学习一门语言的过程 1.2.1 熟悉集成开发环境 在打开Visual C++ 6.0后,需要熟悉Visual C++ 6.0这个集成开发环境.首先从Windows操作系统中选择"开始"→"程序&quo

《Visual C++ 开发从入门到精通》——第1章 Visual C++ 6.0的最初印象1.1 Visual C++ 6.0概述

1.1 Visual C++ 6.0概述 知识点讲解:光盘视频PPT讲解(知识点)第1章Visual C++ 6.0介绍.mp4 Visual C++ 6.0是一个强大的可视化软件开发环境,通过它可以快速编写出各种C/C++程序.从数据库应用程序到网络应用程序,从图形.图像绘制到多媒体编程,从基本的对话框.单文档.多文档应用程序到动态链接库,再到ActiveX控件.总之,通过Visual C++ 6.0这一工具,可以实现上述各类程序. 1.1.1 Visual C++ 6.0的特点Visual

《Visual C++ 开发从入门到精通》——2.3 必须遵循的编码规范

2.3 必须遵循的编码规范 知识点讲解:光盘\视频\PPT讲解(知识点)\第2章\必须遵循的编码规范.mp4 编码规范即我们在编写代码时需要遵守的一些规则.好的编码规范可以大大提高代码的可读性和可维护性,甚至提高程序的可靠性和可修改性,保证了代码的质量.特别是在团队开发大型项目时,编码规范就成为了项目高效运作的重要要素.本节将简要介绍在编写C++程序时必须遵循的编码规范. 2.3.1 养成良好的习惯 程序快缩进,要使用Tab键缩进,不能和空格键混合使用. 函数不要太长,如果太长,建议拆分处理.

《Visual C++ 开发从入门到精通》——2.8 常量

2.8 常量 知识点讲解:光盘\视频\PPT讲解(知识点)\第2章\常量.mp4 所谓常量是指内容固定不变的量,无论程序怎样变化执行,它的值永远不会变.在编程中,常量常用于保存像圆周率之类的常数.在本节的内容中,将详细介绍C++中常量的基本知识,为读者步入本书后面知识的学习打下基础. 2.8.1 什么是常量 常量是指在程序执行中不变的量,它分为字面常量和符号常量(又称标识符常量)两种表示方法.如25.-3.26.'a'."constant"等都是字面常量,即字面本身就是它的值.符号常量

《Visual C++ 开发从入门到精通》——1.3 利用Visual C++ 6.0编写C++程序

1.3 利用Visual C++ 6.0编写C++程序 知识点讲解:光盘视频PPT讲解(知识点)第1章利用Visual C++ 6.0编写C++程序.mp4 实例003 编写.调试和运行一个标准的C++程序源码路径 光盘daimapart 01 视频路径 光盘视频实例第1章003 本实例的功能是,使用Visual C++6.0编写.调试并运行一个标准的C++程序.本实例的具体实现流程如下. (1)选择File→New命令,在New对话框中选择Win32 Console Application项,

《Visual C++ 开发从入门到精通》——2.5 标识符

2.5 标识符 知识点讲解:光盘视频PPT讲解(知识点)第2章标识符.mp4 标识符就是为变量.函数.类及其他对象所起的名称,但是它们不能随意命名,因为在C++系统中,已经预定义了很多标识符,这些预定义的标识符不能被用来定义其他意义. 2.5.1 C++中的保留字 C++中的保留字即我们前面提到的已经预定义了的标识符,常见的C++保留字如表2-1所示. 表2-1 C++预定义标识符 表2-1中的预留关键字已经被赋予了特殊的含义,不能再被命名为其他的对象.例如,int表示整型数据类型,float表