博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++
座右铭:“不要等到什么都没有了,才下定决心去做”
大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点
目录
C++的输入输出
C++的输入输出
C++的输入输出流
iostream类库中有关的类
用流成员函数put输出一个字符
用流成员函数write输出字符串
用流成员函数get获取一个字符
1.无参数的get
3.有三个参数的get函数
用流成员函数getline读取字符串
用流成员函数read读取字符串
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
using namespace std; int main() { char a='m'; cout.put(a)< 用流成员函数write输出字符串
write
write的原型:
ostream& write(const char* s,streamsize n);
const char* s:输出字符串的首地址
streamsize n:输出字符串的个数
ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出
类似puts
#include
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)< 用流成员函数get获取一个字符
1.无参数的get
get
从输入流中提取一个字符
get的原型:
int get();
int 返回类型为整形(int)
注意:不管是读还是写数据,都是在缓冲区拿去数据,如果缓冲区有数据,就不会让你从键盘输入
#include
using namespace std; int main() { char c; int b; cout<<"第一次:输入两个字符"< 2.有一个参数的get
get的原型:
istream& get(char& c);
char& c:读取的数据给变量c
istream& 返回类型是通用输入流的基类对象的引用,因此可以连续输入
#include
using namespace std; int main() { char str; char ptr; cout<<"请输入数据"< 3.有三个参数的get函数
get的原型:
istream& get(char* pch,int nCount,char delim);
char* pch:从流中读取字符,然后把首地址放到pch
int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'
char delim:从流中读取字符,如果读取到字符delim则提前结束读取
istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入
#include
using namespace std; int main() { char arr[20]; cin.get(arr, 7, ' '); cout< 用流成员函数getline读取字符串
getline从输入流中读取一行字符
getline的原型:
istream& getline(cahr* pch,int nCount,char delim);
char* pch:从流中读取字符,然后把首地址放到pch
int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'
char delim:从流中读取字符,如果读取到字符delim则提前结束读取
istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入
#include
using namespace std; int main() { char arr[20]; cin.getline(arr, 7, ' '); cout< 用流成员函数read读取字符串
read用于从输入流中读取指定数目的字符,并将读取的字符存储
read的原型:
istream& read(char* pch,int nCount);
char* pch:从流中读取字符,然后把首地址放到pch
int nCount:从流中读取字符字符的个数,能读取到nCount个字符
istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入
#include
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<
如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家!