一个c程序
输入一串整数和任意数目的空格,计算整数的和
#include<stdio.h>
int main()
{
int sum=0;
int i;
char ch;
printf("输入一串整数和任意数目的空格:");
while( scanf("%d",&i)==1)
{
sum+=i;
while((ch=getchar())==' ');//屏蔽空格
if(ch=='\n')
break;
ungetc(ch,stdin);//将变量ch中存放的字符退回stdin输入流
}
printf("结果是:%d",sum);
return 0;
}
cin.peek() & cin.get()
#include<iostream>
using namespace std;
int main()
{
int sum=0;
cout << "输入一串整数和任意数目的空格:";
int i;
while( cin>>i )
{
sum +=i;
while(cin.peek()==' ')//peek的意思是偷窥。在这里意思是只是识别到字符,但是并不把字符从流中拿走
{
cin.get();
}
if(cin.peek()=='\n')
break;
}
cout<<"结果是:"<<sum<<endl;
return 0;
}
用法一:cin.get(字符变量名)可以用来接收字符
用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的 不足.
cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除
cin.ignore() & cin.getline()
#include<iostream>
using namespace std;
int main()
{
char buf[20];
cin.ignore(7);
cin.getline(buf,10);
cout<<buf<<endl;
return 0;
}
cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),
不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字
符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用
来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可
以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是
只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输
入缓冲(流)中清除出去。
如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清
掉,没有遇到EOF就清掉一个字符然后结束,会导致不正确的结果,因为EOF是文件结束
标识.
cin.getline()读取一行,直到读到换行符或者指定位数结束。最后一位为'\0'
cin.read() & cin.gcount()
#include<iostream>
using namespace std;
int main()
{
const int SIZE=50;
char buf[SIZE];
cout<<"请输入一段文本:";
cin.read(buf,20);
cout<<"字符串收集到的字符数为:"
<<cin.gcount()<<endl;
cout<<"输入的文本信息是:";
cout.write(buf,20);
cout<<endl;
return 0;
}
cin.read():读
cin.write()写
cin.gcount()计数
cout.precision & cout.width
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double result = sqrt(3.0);
cout << "对3开方保留小数点后0~9位,结果如下:\n"<<endl;
for (int i=0;i<=9;i++)
{
cout.precision(i);
cout<<result<<endl;
}
cout<<"当前的输出精度为:"<<cout.precision()<<endl;
return 0;
}
cout.precision() :有效位数
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int width = 4;
char str[20];
cout<<"请输入一段文本:\n";
cin.width(5);//每次只接收4个字符,其他的放在流中等待接收。
while(cin>>str)
{
cout.width(width++);//输出的字符串宽度为width,不足的会用空格补足
cout<<str<<endl;
cin.width(5);
}
return 0;
}
ctrl+z为文件结束符