输入
char a,b;
- cin>>a 遇到空白字符就认为结束
- cin.get(a) ; b=cin.get() 输入一个字符给a,
但是b=cin.get() 会承接输入字符给a后的一个enter,space,tab等,把他们继续留在缓冲区中 因此a是一个字符,b是一个enter/space/tab - cin.get(arrayname, size, s) 把数据输入到arrayname字符组中,但输入长度到达size时结束或者遇到字符s时结束
arrayname必须是字符数组,就像下面的a[10]一样,不可以是string, size是最大的输入长度 s为控制,遇到s那么当前输入结束,缓冲区中的s将被舍弃
cin.get(arrayname, size) 当遇到enter时会结束目前的输入,并不会删除缓冲区中的enter cin.getline(arrayname, size) 当遇到entre时会结束目前的输入,但是会删除缓冲区中的enter
char a[10];
cin.get(a,20);
cout<<a<<endl;
cout<<sizeof(a)<<endl;
1.------------
iam
iam
10
2.------------
iamlixinxin
iamlixinxin
10
3.------------
iamlixinxinxinxixnixnxin
iamlixinxinxinxixni
10
总之 :getline会删除缓冲区中的内容,get 并不会删除缓冲区中的内容
输出
ios::left 在串的末尾插填入充字符以使其左对齐 ios::right 在前面插入字符使其右对齐 ios::fixed 将浮点数按照普通定点格式处理
char c[30]="this is string";
cout.width(30);
cout.fill('*');
cout.setf(ios::left);
cout<<c<<"---L1"<<endl;
上面的结果等价于下面的
cout<<setw(30)<<left<<setfill('*')<<c<<"---L6"<<endl;
精度的控制1
showpoint: 表示打印浮点数的小数点和小数位数,即时显示的数值没有小数点,如果没有指定所需的小数点位数,则默认显示6个有效数组 setprecision(n) 表示显示n位有效数字 头文件是iomanip fixed 是一种流操作符,表示浮点输出应该以固定点或者小数点表示法显示,也就是不使用科学计数法,一般与setprecision(n)一起使用,这是后n就表示小数点后面显示n位数字 当同时使用fixed和setprecision时,不需要使用showpoint setbase(x) 可以控制精度
double d=-1231.23290;
cout.width(30);
cout<<d<<"---L3"<<"\n";
cout<<d<<endl;
cout<<showpoint<<d<<endl;
cout<<setprecision(3)<<d<<endl;
cout<<fixed<<d<<endl;
cout<<fixed<<showpoint<<setprecision(3)<<d<<endl;
精度的控制2
ios::oct 表示以八进制形式显示 ios::dec 表示以十进制形式显示 ios::hex 表示以十六进制形式显示
ios::showbase 表示为整数添加一个表示其进制的前缀 ios::showpoint 表示在浮点数表示的小数中强制插入小数点 ios::setw(n) 控制输出的间隔,默认是右对齐 ios::fixed 一种流操作符,表示浮点输出应该以固定点或者小数点表示法显示,也就是不使用科学计数法,
cout.setf(ios::dec|ios::showbase|ios::showpoint);
cout<<d<<endl;
cout.setf(ios::hex|ios::showbase|ios::showpoint);
cout<<d<<endl;
cout.setf(ios::hex,ios::basefield);
cout.setf(ios::showbase|ios::showpoint);
cout.width(30);
cout<<27<<"---L3"<<"\n";
?上面的例子中showbase是有用的,但是showpoint没有效果,并且将27换成浮点数比如19.19之后,得到的结果还是19.19,没有十六进制的转换,也没有十六进制的标志
cout.setf(ios::oct,ios::basefield);
cout<<100<<"----L5"<<"\n";
文件输入输出
#include<fstream>
ofstream
ifstream
fstream
文件的打开
void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
mode表示的是文件打开的方式
ios::in 输入到内存 也就是读 ios::out 输出到内存 也就是写 ios::ate 初始位置:文件末尾 ios::app 所有输出附加在文件末尾 ios::trunc 如果文件已存在则先删除文件 ios::binary 二进制方式
#include<iostream>
#include<fstream>
using namespace std;
int main(int argc, char const *argv[])
{
fstream ioFile;
ioFile.open("./a.dat",ios::out);
ioFile<<"李四"<< " "<< 73<<" "<< 98<<" "<<60<<endl;
ioFile<<"王五"<< " "<< 74<<" "<< 97<<" "<<61<<endl;
ioFile<<"张三"<< " "<< 75<<" "<< 96<<" "<<62<<endl;
ioFile<<"钱六"<< " "<< 76<<" "<< 95<<" "<<63<<endl;
ioFile<<"黄七"<< " "<< 77<<" "<< 94<<" "<<64<<endl;
ioFile.close();
ioFile.open("./a.dat",ios::in|ios::binary);
char name[10];
int chinese, math, computer;
cout<<"姓名\t"<<"英语\t"<<"数学\t"<<"计算机\t"<<"总分"<<endl;
ioFile>>name;
while(!ioFile.eof())
{
ioFile>>chinese>>math>>computer;
cout<<name<<"\t"<<chinese<<"\t"<<math<<"\t"<<computer<<"\t"<<chinese+math+computer<<endl;
ioFile>>name;
}
ioFile.close();
system("pause");
return 0;
}
EOF 是end of file 的缩写,表示文字流(stream)的结尾,可以是文件,也可以是标准输入输出stdin
int main()
{
char ch;
ofstream out("./test.dat",ios::out|ios::binary);
for(int i=0;i<90;i++)
{
if(i>0&&(i%30)==0)
{out.put('\n');
out.put(i);
out.put(' ');}
}
out.close();
ifstream in("./test.dat",ios::in|ios::binary);
while(in.get(ch))
cout<<ch;
in.close();
return 0;
}
1 2 3 4 5 6 7 8 9 : ;
< = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y
参考: C++ C语言中文网 C++文件读写详解
|