• 玩转输入输出


    玩转输入输出

    标准输入输出流的对象和操作方法都是由istream和ostream两个类提供的,这两个类继承自ios基类,它们预定义了标准输入输出流对象,并且提供了多种形式的输入输出功能。C++在进行输入时需要从流中提取数据,在输出时需要向流中插入数据,提取和插入是通过在流类库中重载“>>”和“<<”运算符实现的。
    1 cin

    cin 是 istream类的对象,用于处理标准输入(即键盘输入),

    cout 是 ostream类的对象,用于处理标注输出(即屏幕输出)。

    cin 与提取运算符 >> 结合使用 , cout 与插入运算符 << 结合使用,完成C++中的输入输出操作。

    cin从标准输入设备(键盘)中获取数据,通过提取运算符“>>”从流中提取数据,然后发送给cin对象,由cin对象将数据发送到指定的地方。cin是带缓冲区的输入流对象,只有在输入完数据并按下回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。

    int a;
    
    cin >> a;
    
    • 1
    • 2
    • 3

    此时若从键盘上输入10,则10只是被存入缓冲区,并不能被“>>”运算符提取,按下回车键后,缓冲区中的内容才被刷新成输入流,被“>>”运算符提取后传递给cin对象,由cin对象发送到变量a 中存储。

    当然针对以上代码,输入字符串则会操作失败,此时cin流被置为出错状态,这是C++ I/O安全性的体现。

    除了单个变量读取,cin对象也可以一次性读入多个变量的值,因为“>>”运算符返回的是istream的引用,所以可连续提取数据。

    int a , b;
    
    cin >> a >> b;
    
    • 1
    • 2
    • 3

    当输入多个数值时,要在数值之间加空格以示区分,cin读到空格时,就能够区分输入的各个数值。除了在输入的数据之间加空格,也可以在每输入一个数据后都按回车键Tab键,这样也可以正确地读入数据

    也可以采用cin对象一次性读入多个不同类型的变量值。

    string s;
    
    float f;
    
    cin >> s >> f;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    cin会将它们分别存储到对应变量中。

    读入字符串,也可以采用字符数组存储字符串。

    char str[10];
    
    cin >> str;
    
    • 1
    • 2
    • 3

    如果用一个字符数组存储字符串,则要确保输入的字符串不超出字符数组的大小,否则会发生溢出,破坏内存中的其他数据。

    2 cout

    cout是ostream类的对象,对应的标准设备为屏幕,叫作标准输出对象或屏幕输出对象,但也可被重定向输出到磁盘文件。用户可以通过cout对象调用ostream类的插入运算符和成员函数来输出信息。

    利用cout对象可以直接输出常量值:

    cout << 10 << endl;
    
    cout << 'a' << endl;
    
    cout << "C++" << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    利用cout对象输出变量的值。在用cout输出变量值时,不必设置以什么格式输出,“<<”运算符会根据变量的数据类型自动调用相匹配的重载函数来正确输出。

    int a = 10;
    
    string s = "C++";
    
    float f = 1.2;
    
    cout << a << endl;
    
    cout << s << endl;
    
    cout << f << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    利用cout对象输出指针、引用类型的数据。当输出数据为指针或引用类型时,与printf()函数的用法一致,不带*符号输出的是指针的值,即变量的地址;带*符号输出的是指针指向的变量的值。它比printf()函数简便之处在于不必设置数据的输出格式。

    #include
    
    using namespace std;
    
    int main(){
    	
    	int a = 10;
    	
    	int  *p;
    	
    	int &b = a;   //引用,变量b和a指向同一个空间
    	
    	p = &a; //指针p存储变量a的地址
    	 
    	string s = "C++";
    	
    	string *ps = &s;
    	
    	cout << p << endl;
    	
    	cout << b << endl;
    	
    	cout << *p << endl;
    	
    	cout << ps << endl;
    	
    	cout << *ps << endl;
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述

    cout对象连续输出数据

    int a = 10;
    
    char c = 'a';
    
    cout << a << "," << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    输入圆的半径r,输出其周长和面积
    #include
    
    using namespace std;
    
    int main(){
    	
    	const double pi = 3.14159;
    	
    	double r , c , s;
    	
    	cout << "输入圆的半径:";
    	
    	cin >> r;
    	
    	c = 2.0 * pi * r;
    	
    	s = pi * r * r;
    	
    	cout << "圆的周长为:" << c << endl;
    	
    	cout << "圆的面积为:" << s << endl;
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

  • 相关阅读:
    a16z:呼吁SEC改革加密资产托管规则的建议
    【JavaWeb】关于JWT做认证授权的十万个理由(JSON Web Token)
    ChatGPT-01 用ChatGPT指令,自学任何领域的系统知识
    智能文档控制——文档的智能归档、捕获、索引、访问和协作
    Java 线程通信
    SpringCloud Stream整合RabbitMQ3.5.0
    通过java爬取动态网页
    go语法基础二(结构体,协程,锁,xml,io)
    <C++>【类与对象篇】(一)
    Linux 之 split 切分大文件 cat 合并多个小文件
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126452102