问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言中的输入流是什么意思?

发布网友 发布时间:2022-04-25 13:01

我来回答

2个回答

热心网友 时间:2024-09-27 15:58

可以把流看作是一种数据的载体,通过它可以实现数据交换和传输。就像水流是一串水组成的 计算机中的数据流就是由一串数据组成的东西。

C++的输入输出流及文件操作
1. C++保留C的输入输出单个字符的函数
(1) putchar(c) —— 字符输出
例程:
#include
using namespace std;
int main()
{
char a,b,c;
a='B'; b='O';c='Y';
putchar(a); putchar(b); putchar(c);putchar('/n');
putchar(66);putchar(79);putchar(89);putchar(10); //10是换行的ASCII码
return 0;
}
(2) getchar() ——字符输入函数
例程:
#include
using namespace std;
int main()
{
char c;
c=getchar();
putchar(c+32); //转化为小写字母,大小写之间包括[ / ] ^ - 、6个字符,因此不加26加32。'A'=65
putchar('/n');
return 0;
}
也可用cout来输出: cout<<(c=getchar()+32);
2. scanf()、printf()函数的输入和输出
scanf(格式控制,输出表列);
printf(格式控制,输出表列);
例程:
#include
using namespace std;
int main()
{
int a;
float b;
char c;
scanf("%d % c % f", &a,&c,&b);
printf("a=%d, b=%f, c=%c /n",a,b,c);
return 0;
}
3. 标准输入输出流cin、cout
包括头文件#include
输入输出流的控制符要加入头文件 #include
cout<<"dec:"<
cout.put(97); //显示a字符--使用cout的成员函数put(c)
cin成员函数get()
(1) 不带参数的
char c=cin.get(); //用cin的成员函数get()从键盘读入一个字符到c中去
(2) 带一个参数的
cin.get(ch); //从输入的流中接受一个字符,并赋给字符变量ch
(3) 带三个参数的
cin.get(字符数组,字符的个数n,终止字符)
例程:
#include
using namespace std;
int main()
{
char ch[20];
cout<<"in put a string:"<
cin.get(ch,10,'/n'); /*取得输入流的前10-1=9个字符赋值给ch数组的前9个元素,并规定换行符为为输入流的终止结束符*/
cout<
return 0;
}
如输入:1 2 34567890 //按换行键终止流输入
则输出:1 2 34567 //只读得前9个送入ch数组中
cin的成员函数getline() ——从输入流中读入一行字符
cin.getline(字符数组(或字符指针),字符的个数n,终止字符)
例程:
#include
using namespace std;
int main()
{
char ch[20];
cout<<"input a string:"<
cin>>ch;
cout<<"The string read with cin is:"<
cin.getline(ch,20,'/'); //读取19个字符到ch数组或遇到'/'结束
cout<<"The second part is:"<
cin.getline(ch,20); //读取19个字符到ch数组或遇到'/n'结束,遇到'/'仍作为字符读入
cout<<"The third part is:"<
return 0;
}
istream类的其他的成员函数如:eof(),在输入流中读取数据,如果到达末尾(遇到文件结束符),则eof()返回真,否则为假.
例程:
#include
using namespace std;
int main()
{
char c;
while(!cin.eof()) //若未遇到文件结束符
if((c=cin,get())!=' ') //检查读入的字符是否为空格字符
cout.put(c);
return 0;
}
4. 磁盘文件的打开和关闭
打开
ofstream outfile;
if(outfile.open("f1.data",ios::app)==0) // 打开
cout<<"打开失败!";
……………………
outfile.close(); //关闭
5. 文件写入
#include
#include
#include //一定不能少了,否则报错 error C2679
using namespace std;
int main()
{
string str;
ofstream out("d.txt",ios::out); //等价于ofstream out("d.txt")
if(!out) //若打开失败,out返回0值
{
cerr<<"打开失败!"<
exit(0);
}
str="床前明月光/n疑是地上霜/n举头望明月/n低头思故乡/n";
out< return 0;
}
6. 读文件到控制台
#include
#include
#include
using namespace std;
int main()
{
ifstream infile("d://new//d.txt",ios::in); //定义输入文件的流对象,以输入方式打开磁盘文件d.txt,第二个参数可去
if(!infile)
{
cerr<<"打开失败!"< exit(1);
}
for(string str;getline(infile,str);) //逐行打开并逐行显示,因此在循环中实现
cout< infile.close();
return 0;
}
或把 for(string str;getline(in,str);)
cout<
两句改为 string str;
while(getline(in,str))
cout<
7. 文件复制
#include
#include
#include
using namespace std;
int main()
{
ifstream in("d.txt");
if(!in)
{
cerr<<"打开源文件失败!"< exit(1);
}
ofstream out("b.txt");
if(!out)
{
cerr<<"打开目的文件失败!"< exit(1);
}
for(string str;getline(in,str);)
out< cout<<"文件复制成功!"<
in.close();
out.close();
return 0;
}
8. 自定义一个文件读入的函数 void display( char *filename)
#include
#include
#include
using namespace std;
void display(char *filename)
{
ifstream infile(filename,ios::in);
if(!infile)
{
cerr<<"打开失败!"< exit(1);
}
char ch;
while(infile.get(ch))
cout.put(ch);
cout< infile.close();
}
int main()
{
display("d.txt");
return 0;
}
9.关于文件读写的综合应用
#include
#include
using namespace std;
//从键盘读入字母并存入文件“d.txt”中
void save_to_file()
{
ofstream ofile("d.txt");
if(!ofile)
{
cerr<<"打开失败d.txt!"< exit(1);
}
char c[80];
cin.getline(c,80); //从键盘逐个读入一行字符
for(int i=0;c[i]!=0;i++) //对字符逐个处理,知道遇到'/n'结束
if(c[i]>=65 && c[i]<=90||c[i]>=97 && c[i]<=122)
{
ofile.put(c[i]); //将字母存入磁盘文件d.txt
cout< }
cout< ofile.close();
}
//将"d.txt"中的字母转化为大写字母并存入"out.txt"中
void get_from_file()
{
char ch;
ifstream infile("d.txt");
if(!infile)
{
cerr<<"打开失败d.txt!"< exit(1);
}
ofstream outfile("out.txt");
if(!infile)
{
cerr<<"打开失败out.txt!"< exit(1);
}
while(infile.get(ch)) //逐个读入字符成功后执行下面的语句
{
if(ch>=97 &&ch<=122)
ch=ch-32;
outfile.put(ch);
cout< }
cout< infile.close();
outfile.close();
}
int main()
{
save_to_file();
get_from_file();
return 0;
}
=========================== C/C++的字符或字符数组的读入函数总结=====================
1、cin
1、cin.get()
2、cin.getline()
3、getline()
4、gets()
5、getchar()
1、cin>>
用法1:最基本,也是最常用的用法,输入一个数字:
#include
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<}
输入:2[回车]3[回车]
输出:5
用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
#include
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<}
输入:jkljkljkl
输出:jkljkljkl
输入:jkljkl jkljkl //遇空格结束
输出:jkljkl
2、cin.get()
用法1: cin.get(字符变量名)可以用来接收字符
#include
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
cout<}
输入:jljkljkl
输出:j
用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
#include
using namespace std;
main ()
{
char a[20];
cin.get(a,20);
cout<}
输入:jkl jkl jkl
输出:jkl jkl jkl
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'/0')
3、cin.getline() // 接受一个字符串,可以接收空格并输出
getline 会将换行符替换为空字符
#include
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<}
输入:jkljkljkl
输出:jklj
接受5个字符到m中,其中最后一个为'/0',所以只看到4个字符输出;
如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf
//延伸:
//cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
//当第三个参数省略时,系统默认为'/0'
//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
当用在*数组中的时候,也可以用cin.getline(m[i],20)之类的用法:
#include
#include
using namespace std;
main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"/n请输入第"<cin.getline(m[i],20);
}
cout<for(int j=0;j<3;j++)
cout<<"输出m["<
}
请输入第1个字符串:
kskr1
请输入第2个字符串:
kskr2
请输入第3个字符串:
kskr3
输出m[0]的值:kskr1
输出m[1]的值:kskr2
输出m[2]的值:kskr3
4、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”
#include
#include
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
5、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include”
#include
#include
using namespace std;
main ()
{
char m[20];
gets(m); //不能写成m=gets();
cout<}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jkl jkl
输出:jkl jkl jkl
类似cin.getline()里面的一个例子,gets()同样可以用在*数组里面:
#include
#include
using namespace std;
main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"/n请输入第"<gets(m[i]);
}
cout<for(int j=0;j<3;j++)
cout<<"输出m["<
}
请输入第1个字符串:
kskr1
请输入第2个字符串:
kskr2
请输入第3个字符串:
kskr3
输出m[0]的值:kskr1
输出m[1]的值:kskr2
输出m[2]的值:kskr3
自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;
这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3 的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;
6、getchar() //接受一个字符,需包含“#include”
#include
#include
using namespace std;
main ()
{
char ch;
ch=getchar(); //不能写成getchar(ch);
cout<}
输入:jkljkljkl
输出:j
//getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;
总结:
1.读入一行
gets(char a[]); //接受一行,遇回车结束
gets(m[i]) //可用于*数组中
cin.get(char a[],int 5,'/n') //将字符数组a的前5个字符读入,遇到换行符结束;比如:a bc12ds,将会读入4个字符 a bc,外加一个'/0';
// 一般第三个参数不写,默认为'/0'
eg:
#include
#include
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<}
2.读入一个字符
getchar() //接受一个字符,需包含“#include”
char ch =getchar();
cin.get(char c) 或者 cin.get()
char ch=cin.get(); 或者cin.get(ch)
getline()和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
cin.getline(char a[],int 5,'/n') //将字符数组a的前5个字符读入,遇换行符结束;如:a bc12ds,将会读入4个字符 a bc,外加一个'/0';
// 一般第三个参数不写,默认为'/0'
cin.getline(m[i],20) //可用于*数组中
getline() // 接受一个字符串,可以接收空格并输出,需包含“#include"

热心网友 时间:2024-09-27 15:58

输入流是一种输入的格式

所谓的“流”,意味着是顺序访问形式。(也就是相对于随机访问形式来说的)

当用 scanf 等流方式打开一个文件的时候,文件指针会按顺序读取里面的内容,就好象水顺次从水管中流出一样,而这一个模型我们把它抽象为“输入流”。

至于详细的学术的定义,你搜一下就可以找到的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 java io过程中改变当前字符输入流的编码 鸭润水饺怎么做 java IO流中 字符的输入流对象时什么?怎么复制? 鸭肉饺子的做法,鸭肉饺子怎么做好吃,鸭肉饺子? java字节输入流什么意思?输入的是字节,输出的是字符? 粉底液,bb霜,cc霜之间有什么区别 下面哪个基于unicode字符的输入流 java中字符输入流括号中为什么还要加入字母 BB霜,CC霜,粉底液,遮瑕霜有什么区别 bufferedwriter是面向字符输出流吗 java输入流和输出流 常见的类有哪些?怎么确定是Input还是output 我对这... JAVA的输入输出流有多少种? 粉底液和BB霜有什么区别,还有CC霜是什么东西?? Java常用的字符流类有哪些? 你知道BB霜CC霜粉底液的区别在哪里吗? 下面哪个流类属于面向字符的输入流 下面哪个流类属于面向字符的输入流a bufferedwriter b fileinputstream... 气垫cc,bb 粉底什么的与素颜霜有什么区别啊? 面向字符的输入流有哪些 BB霜、CC霜、粉底液区别在哪?该怎样选择? 红油水饺鸭子怎么做? java 如何输入一个字符??java的输入方法有哪些??(新手求教。)_百度... 鸭子汤的做法,鸭子汤怎么做好吃,鸭子汤的家常 线程、IO流、哪些是字节流哪些是字符流 Java如何把字符串转化为输入流 鸭子汤的做法,鸭子汤怎么做好吃,鸭子汤的家常做法 面向数据流的设计方法主要有哪几个步骤 心系中国梦,正是读书时的作文怎么写 以胸怀中国梦,永远跟党走为主题,描述自己的梦想,阐释读书心得抒发 老鸭汤的做法大全 海水可以净化成淡水吗? JAVA小题目 &quot;心系中国梦,正是读书时&quot;的作文怎么写,600字 请问海水经过蒸发能变成淡水吗? 鸭子萝卜汤的做法大全 征文:心系中国梦,正是读书时。 老鸭煲汤的做法大全集 心系中国梦,正是读书时,作文怎么写 从海水中能提炼出淡水吗. 清炖鸭子汤的做法大全