您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记--输入输出流

2017-03-18 23:33 260 查看

标准输出流

ostream类定义了cout,cerr,clog三个对象。

1.cout(console output)

(1)不是C++的关键字,是ostream定义的类。

(2)用<<运算符重载,定义了基本的数据类型。

(3)cout在内存中开辟缓存区,插入endl时清空缓存区并换行;’\n’只换行,不清除。(但也因编译器而异)

格式输出:

a.使用控制符控制格式输出

#include<iostream>
#include<iomanip>//定义控制符,部分控制符,如setw(设置字段宽度的位数),只对紧接着的第一个数据起作用
using namespace std;
double a=123.456789012345;
cout<<a;                                          //123.456
cout<<setprecision(9)<<a;                         //123.456789
cout<<setiosflags(ios::fixed)<<setprecision(8)<<a;//123.45678901


b.用流对象的成员函数控制输出格式

流成员函数:

precision(n),设置实数的精度为n位

width(n),设置字段宽度n

fill(c),设置填充字符c

setf(),设置输出格式

unsetf(),终止设定的输出格式

cout.precision(6);
cout<<pi<<endl;
cout.setf(ios::scientific);
cout.width(14);


2.cerr(console error)

与cout的区别:只能在显示器输出,不能输出到磁盘文件。

3.clog(console log)

与cerr类似。区别:cerr不经过缓冲区直接向屏幕输出。clog先存在缓冲区中。

标准输入流

1.cin流

cin是istream类的派生类的对象。

(1).”>>”通常跳过空格、Tab键、换行等空白字符。

(2).遇到无效字符或文件结束符(Ctrl+Z或Ctrl+D),cin=0;正常状态cin非负。

2.输入流的成员函数

(1)cin.get(),cin.get(ch),cin.get(字符数组,字符个数,’终止字符’)

#include<iostream>
using namespace std;
void main()
{
char ch;
char ch1[5];
double a = 123.4567890123;
cout.precision(10);
cout << a << endl;
cin.get(ch);//提取一个字符,包括空白字符
cout << "ch:" << ch << endl;
cin.get(ch1, 5, '.');//提取5个字符,遇到"."结束,赋给字符数组(或字符指针)ch1
cout << "ch1:" << ch1 << endl;
system("pause");
}


(2)eof(end of file)

#include<iostream>
using namespace std;

int main()
{
char c;
while (!cin.eof())//eof()为假表示没有遇到文件结束符
if ((c = cin.get()) != ' ')//检查读入字符有无空格
cout.put(c);
return 0;
}
/*
C++ is very interesting.
C++isveryinteresting.
^Z                                                //Ctrl+Z
请按任意键继续. . .
*/


(3)cin.putback()

将get或getline函数从流中读取的字符ch返回到输入流中,插入到当前指针的位置。

void main()
{
char c[20];
cout << "please enter a sentence:" << endl;
cin.getline(c, 15, '/');
cout << "first:" << c << endl;
cin.putback(c[0]);
cin.getline(c, 15, '/');
cout << "second:" << c << endl;
system("pause");
}
/*
please enter a sentence:
I am handsome./ am crazy./
first:I am handsome.
second:I am crazy.
请按任意键继续. . .
*/


(4)cin.ignore(n,’终止字符’)

ignore()//(n默认值为1,终止字符默认为EOF)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: