[从C到C++] 1.5 C+的输入与输出

简介:

在C语言中,通常会在采用格式化输入输出函数printf和scanf用于输入或输出数据或信息。在C++语言中,C语言的这一套输入输出库我们仍能使用,但是C++语言又自定义了一套新的、更容易使用的输入输出库。

在C++程序中,输入与输出可以看做是一连串的数据流,输入即可视为从文件或键盘中输入程序中的一串数据流,而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中。

在编写C++程序时,如果需要使用输入输出时,则需要包含头文件iostream。在iostream中定义了用于输入输出的对象,例如常见的
cin表示标准输入、cout表示标准输出、cerr表示标准错误

需要特别强调的是cin、cout、cerr不是C++中的关键字,其本质是函数调用,它们的实现采用的是C++的运算符重载,这些知识点将会在后续逐一介绍。其中cout和cerr的输出目的地都是显示器,但不同的是
cout是带有缓冲的,而cerr则不带缓冲

在我们使用cout进行输出时需要紧接着使用“<<”操作符,使用cin进行输入时需要紧接着使用“>>”操作符,这两个操作符可以自行分析所处理的数据类型,因此无需我们像使用scanf和printf那样设置输入输出格式化语句。

[例1]C++简单的输入输出代码示例:

#include<iostream>
using namespace std;
int main()
{
    int x;
    float y;
    cout<<"Please input an int number:"<<endl;
    cin>>x;
    cout<<"The int number is x= "<<x<<endl;
    cout<<"Please input a float number:"<<endl;
    cin>>y;
    cout<<"The float number is y= "<<y<<endl;   
    return 0;
}

这段程序的功能是提示用户输入一个整型和一个浮点型数字,然后将其显示在显示器上,这段代码的运行结果如下所示(↙表示用户按下enter键):


Please input an int number:
8↙
The int number is x= 8
Please input a float number:
7.4↙
The float number is y= 7.4   

语句cout<<"Please input a int number:"<>x;表示从标准输入中读入一个int型的数据并存入到x变量中。如果此时用户输入的不是int型数据,则会被强制转化为int型数据。语句cout<<"The int number is x= "<

[例2]cin 连续输入示例:


#include<iostream>
using namespace std;
int main()
{
    int x;
    float y;
    cout<<"Please input an int number and a float number:"<<endl;
    cin>>x>>y;
    cout<<"The int number is x= "<<x<<endl;
    cout<<"The float number is y= "<<y<<endl;   
    return 0;
}

运行结果:


Please input an int number and a float number:
8 7.4↙
The int number is x= 8
The float number is y= 7.4   

在例2中我们用cin>>x>>y;连续从标准输入中读取一个整型和一个浮点型数字,然后分别存入到x和y中。输入操作符>>在读入下一个输入项前会忽略前一项后面的空格,如例2中,数字8和7.4之间有一个空格,当cin读入8后忽略空格,接着读取7.4。

当使用cin>>val输入变量时,如果输入一个变量到val中,则该表达式返回true,否则返回false。利用这一特性,我们可以连续输入数据,如例3所示。

[例3]使用 cin 连续输入数据:

#include<iostream>
using namespace std;
int main()
{
    int sum = 0;
    int val = 0;
    cout<<"Please input a number :"<<endl;
    while(cin>>val)
    {
        sum += val;
        cout<<"Please input next number :"<<endl;
    }
    cout<<"The sum of all number is sum = "<<sum<<endl;
    return 0;
}

这个程序从标准输入中不断地读取数据并存入到val变量中,每读入一个数据就求一次和,直至用户输入文件结束符标识时,程序才会输出之前用户输入所有数据之和。

目录
相关文章
|
C++
时间类-输入和输出(C++版本)
请设计时间类 MYTIME,它包含三个私有数据成员:hour, minute, second,均为整数,分别表示时、分、秒。让我们从这里起步,一步一步地完成一个功能完备的时间类,可以适用于处理任何程序中的时间数据。:时间的输出函数不得影响之后其它数据的输出。
374 0
时间类-输入和输出(C++版本)
|
编译器 C语言 C++
【C++要笑着学】关键字 | 命名空间 | 输入和输出(二)
本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以 HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧
231 0
【C++要笑着学】关键字 | 命名空间 | 输入和输出(二)
|
编译器 C语言 C++
【C++要笑着学】关键字 | 命名空间 | 输入和输出(一)
本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以 HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧
274 0
【C++要笑着学】关键字 | 命名空间 | 输入和输出(一)
|
编译器 C语言 C++
C++程序设计——命名空间、输入&输出、缺省参数
C++程序设计——命名空间、输入&输出、缺省参数
279 0
C++程序设计——命名空间、输入&输出、缺省参数
|
编译器 C++
<C++>运算符重载进阶之左移运算符,输出成员属性一步到位
<C++>运算符重载进阶之左移运算符,输出成员属性一步到位
382 0
|
9月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
5月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
156 0
|
5月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
239 0