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

标准输出流

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)

猜你喜欢

转载自blog.csdn.net/m0_37393277/article/details/63362611