《C++ Primer》八章 标准IO库

1.C++的输入/输出有标准库提供,标准库定义了一组类型。支持对文件和控制窗口等设备的读写(IO);

2.getline()函数,istream对象读取写入string中

3.iostream(istream(从流中读取) ostream(写到流中去) 继承而来)定义读写控制窗口类型   fstream定义读写已命名文件的类型  sstream定义类型是读取存储在内存中的string对象

4.每个IO头文件都定义了char和wchar_t类型和标准的输入输出对象

5.只有支持复制的元素类型可以存贮在容器中

*6.形参或者返回类型也不能为流类型。如果需要传递或者返回IO对象,则必须传递或者返回指向该对象的指针或者引用。

7.条件状态IO管理缓冲区机器流状态的相关内容。P247

8.3

8.操纵符  最好使用unitbuf//执行完写的操作都刷新流

   cout<<"Isss = "<<flush;          //刷新流,不在流中添加任何数据
   cout<<"Istring = "<<endl;        //换行
   cout<<"Sstring = "<<ends;       //在缓冲区中插入null,然后刷新它

9.程序崩溃了不会刷新缓冲区。多用endl会解决这一问题

10.输入输出绑定在一起 cin.tie(&cout)  cin.tie(0)打破他们之间的绑定

8.4

11.fstream 定义了自己的新操作,close,open打开相应的文件名。参数是c风格的字符串,不是标准库string类型

  char ch;
  while (cin.get(ch))
  cout.put(ch);
  cout << endl;

8.5字符串流

  1.   cout << "default bool values: "
         << true << " " << false
         << "\nalpha bool values: "
         << boolalpha
         << true << " " << false
         << endl;                       // boolalpha 可是使bool类型按照false 或者true输出。但是默认的是noboolalpha   1或者0输出

    const int ival = 15, jval = 1024;  // const, so values never change

    cout << "default: ival = " << ival
         << " jval = " << jval << endl;
    cout << "printed in octal: ival = " << oct << ival            //8八进制
         << " jval = " << jval << endl;

    cout << "printed in hexadecimal: ival = " << hex << ival    //16禁止
         << " jval = " << jval << endl;

    cout << "printed in decimal: ival = " << dec << ival  //10进制
         << " jval = " << jval << endl;

{
    const int ival = 15, jval = 1024;  // const so values never change

    cout << showbase;   // show base when printing integral values

    cout << "default: ival = " << ival
         << " jval = " << jval << endl;
    cout << "printed in octal: ival = " << oct << ival
         << " jval = " << jval << endl;
    cout << "printed in hexadecimal: ival = " << hex << ival
         << " jval = " << jval << endl;
    cout << "printed in decimal: ival = " << dec << ival
         << " jval = " << jval << endl;

    cout << noshowbase;  // reset state of the stream
}

    cout << uppercase << showbase << hex      //16进制的按照大写的输出 默认为小写
         << "printed in hexadecimal: ival = " << ival
         << " jval = " << jval << endl
         << nouppercase << endl;

 2.   cin>>noskipws 可以读取空格

3. cin >> skipws;
   cout << 10.0 << endl;         // prints 10
   cout << showpoint << 10.0     // prints 10.0000
   cout << noshowpoint << endl;  // revert to default handling of decimal point

   cout << 10.0 << endl;  // prints 10

4.文件模式     binary 二进制的形式进行IO操作| ate定位文件尾部 | in 读| out 写|trunc 打开时清空 | app保存原有数据在后面添加数据

 in && out时不清空

 out 清空

你可能感兴趣的:(《C++ Primer》八章 标准IO库)