C++的输入输出概述

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练题解CC的使用文章「初学」C++

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰 C++的输入输出

🌸C++的输入输出

🌸C++的输入输出流

🏡iostream类库中有关的类

🌸用流成员函数put输出一个字符

🌸用流成员函数write输出字符串

🌸用流成员函数get获取一个字符

🏡1.无参数的get

🏡3.有三个参数的get函数

🌸用流成员函数getline读取字符串

🌸用流成员函数read读取字符串


🐰 C++的输入输出

🌸C++的输入输出

C++的输入输出包括以下三个方面的内容:

(1)对系统指定的标准设备的输入输出,如键盘输入数据,输出到显示器屏幕,这就是标准的输入输出

(2)以磁盘文件为对象进行的输入输出,从磁盘文件输入数据给程序,程序的数据输出到磁盘文件,这就是文件的输入输出(文件的I/O)

(3)对内存中指定的空间进行输入输出。通常是指一个字符数组为储存空间。这种输入输出为字符串输入输出(串I/O)

🌸C++的输入输出流

🏡iostream类库中有关的类

C++系统提供了输入输出的iostream类库。在iostream类库中包含许多用于输入输出的类。ios是抽象基类,由它派生出istream类、ostream类。istream类支持输入操作,ostream类支持输出操作。iostream类是从istream类和ostream类通过多重继承而派生的类,iostream类支持输入输出操作。

为了实现文件操作,C++的iostream类库中派生定义了用于文件操作的类:

fstreambase类:这是一个公共基类,文件操作中不直接使用这个类

ifstream类:派生于fstreambsae和istream,用于对文件进行提取操作

ofstream类:派生于fstreambase和ostream,用于对文件进行读入操作

fatream类:派生于fstreambase和iostream,用于对文件进行提取和读入操作

strstreambase是字符串流类基类,它派生定义了用于字符串操作的类:istrstream、ostrstream等

iostream.h(iostream)头文件中定义的类有ios、istream、ostream、iostream等

iostream.h(iostream)头文件包含了对输入输出流进行操作所需的基本信息。除此之外,还定义了以下4种流对象:

(1)cin:是istream的派生类istream_withassign的对象,是标准输入设备(键盘)输入到内存的数据流,所以称为标准输入流

(2)cout:是ostream的派生类ostream_withassign的对象,是从内存输出到标准输出设备(显示器)的数据流,所以称为标准输出流

(3)cerr和clog:作用相似,像输出设备(显示器)输出出错信息。它们区别在于cerr提供不带缓冲区的输出,clog提供带缓冲区的输出

(4)从键盘输入时使用cin流,向显示器输出时用cout流。向显示器输出出错信息时用cerr或clog流。

🌸用流成员函数put输出一个字符

put

put的原型:

ostream& put (char c);

char c:输出的是单个字符

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似于putchar

注意事项:

put函数的实参可以是:1.字符变量(如果是整形变量,会当作ASCII码值,输出对应ASCII码值的字符)2.可以是ASCII码值或者整形表达式

由于返回类型是通用输出流的基类对象的引用,所以可以来连续调用put函数

#include<iostream>
using namespace std;
int main()
{
    char a='m';
    cout.put(a)<<endl;
    cout.put('m')<<endl;
    cout.put(65)<<endl;
    cout.put(65).put(66).put(67)<<endl;
}
结果:
m
m
A
ABC

🌸用流成员函数write输出字符串

write

write的原型:

ostream& write(const char* s,streamsize n);

const char* s:输出字符串的首地址

streamsize n:输出字符串的个数

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似puts

#include<iostream>
using namespace std;
int main()
{
    char a[]="I Love You";
    int lenth=(int)strlen(a);
    cout.write("I Love You", lenth).put('\n');//可以调用put输出'\0'来进行换行
    cout.write(a, lenth)<<endl;//也可以直接使用endl,进行换行
    return 0;
}
结果:
I Love You
I Love You

🌸用流成员函数get获取一个字符

🏡1.无参数的get

get

从输入流中提取一个字符

get的原型:

int get();

int 返回类型为整形(int)

注意:不管是读还是写数据,都是在缓冲区拿去数据,如果缓冲区有数据,就不会让你从键盘输入

#include<iostream>
using namespace std;
int main()
{
    char c;
    int b;
    cout<<"第一次:输入两个字符"<<endl;
    c=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
    b=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
    cout.put(c).put('\n');
    cout.put(b)<<endl;
    getchar();//getchar()用于清空缓冲区
    getchar();//getchar()用于清空缓冲区
    getchar();//getchar()用于清空缓冲区
    cout<<"第二次:输入两个字符"<<endl;
    int x=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
    int y=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
    cout.put(x);
    cout.put(y)<<endl;
    return 0;
}

🏡2.有一个参数的get

get的原型:

istream& get(char& c);

char& c:读取的数据给变量c

istream& 返回类型是通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char str;
    char ptr;
    cout<<"请输入数据"<<endl;
    int p=cin.get();
    cin.get(str).get(ptr);
    cout<<p<<" "<<str<<ptr<<endl;
    return 0;
}
结果:
请输入数据
abc
97 bc

🏡3.有三个参数的get函数

get的原型:

istream& get(char* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.get(arr, 7, ' ');
    cout<<arr<<endl;
    return 0;
}
结果:
abcd e
abcd

🌸用流成员函数getline读取字符串

getline从输入流中读取一行字符

getline的原型:

istream& getline(cahr* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.getline(arr, 7, ' ');
    cout<<arr<<endl;
    return 0;
}
结果:
abcd e
abcd

🌸用流成员函数read读取字符串

read用于从输入流中读取指定数目的字符,并将读取的字符存储

read的原型:

istream& read(char* pch,int nCount);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,能读取到nCount个字符

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.read(arr, 7);//这里能读到nCount个字符,注意get(char* pch,int nCount,char delim)和getline(char* pch,int nCount,char delim)只能读取nCount-1个字符
    cout<<arr<<endl;
    return 0;
}
结果:
abcdef
abcdef

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸   

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值