C++输入输出流(IO流)

输入输出过程

C++输入输出流(IO流)_第1张图片

输入输出缓冲区的作用

  • 可以屏蔽低级IO的实现,低级IO的实现依赖操作系统本身,所以如果能够屏蔽这部分的差异,可以很容易写出可移植程序。
  • cin从控制台读取数据时,空格表示将数据存储在不同的缓冲区(一个cin有一个缓冲区)
string a;
cin >> a;     //输入  aa bb (中间有空格)
cout << a << endl;  //输出aa,输出第一个缓冲区的内容
string a;
cin >> a;     //输入  aa bb (中间有空格)
cout << a << endl;  //输出aa,输出第一个缓冲区的内容
cin >> a;     //第二个缓冲区,在上面输入aa bb按回车后,就不会再次进行输入了
cout << a << endl;  //输出bb,第二个缓冲区内容。
  • 想要获取空格符,可以使用 getline()

文件IO流

ifstream读文件

explicit ifstream (const char* filename, ios_base::openmode mode = ios_base::in);
  • filename :文件名(如果文件不存在,系统不会自动创建文件,读取失败,系统也不会报错)
  • mode :操作文件的模式,默认为读文件

ofstream写文件

explicit ofstream (const char* filename, ios_base::openmode mode = ios_base::out);
  • filename :文件名(如果文件不存在,则会自动创建一个文件)
  • mode :操作文件的模式,默认为读文件
  • 下面的 >> 、 <<的文件操作方式是C++独有的,C没有。
int main()
{
    ofstream ofs;
    string arr1 = "abcdef";
    string arr2 = "192.168";
 
    ofs.open("text.text", std::ofstream::out);   //以写的模式打开文件
    ofs << arr1 << " " << arr2;   //向text.text文件中写入数据
    ofs.close();  //关闭文件

    ifstream ifs("text.text");  //以读的模式打开文件
    ifs >> arr1 >> arr2;    //读取8个字符,保存在arr中。
 
    cout << arr1 << endl;
    cout << arr2 << endl;

    return 0;
}

C++输入输出流(IO流)_第2张图片

序列化与反序列化sstream

  • 将不同类型的数据,转为同种类型进行存储——序列化
#include 
#include 
#include 
int main()
{
    int a = 123456;
    string b = "abcdef";
    int aa;
    string bb;
    stringstream sst;
    sst << a << "\n" << b;   //序列化
    cout << sst.str() << endl;

    sst >> aa >> bb;    //反序列化
    cout << aa << endl;
    cout << bb << endl;
    return 0;
}

你可能感兴趣的:(c++)