关于c++:C输入输出流IO流

7次阅读

共计 1199 个字符,预计需要花费 3 分钟才能阅读完成。

输入输出过程

输入输出缓冲区的作用

  • 能够屏蔽低级 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 流 <fstream>

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;
}

序列化与反序列化 sstream

  • 将不同类型的数据,转为同种类型进行存储——序列化
#include <iostream>
#include <fstream>
#include <sstream>
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;
}
正文完
 0