内核格式化

来源:互联网 发布:淘宝客微信导购机器人 编辑:程序博客网 时间:2024/05/29 16:36

内核格式化

    iostream族(family)支持程序与终端之间的I/O,而fstream族使用相同的接口提供程序和文件之间的I/O。sstream族,它们也使用相同的接口提供程序和string对象之间的I/O。

    因此,可以使用cout的ostream方法将格式化信息写入到string对象中,并使用istream方法(如getline() )来读取string对象中的信息。

    读取string对象中的格式化信息或将格式化信息写入string对象被称为内核格式化(incore formatting)。

ostringstream

    sstream头文件定义了一个从ostream类派生而来的 ostringstream 类(还有一个基于wostreamwostringstream类,这个类用于宽字符集)。
    可以将可用于cout的方法用于 ostringstream 对象。例如:
    ostringstream outstr;
    double price = 281.00;
    char * ps = "for a copy of the ISO/EIC C++ standard!";
    outstr.precision(2);
    outstr << fixed;
    outstr << "Pay only $" << price << ps <<endl;


    格式化文本进入缓冲区,在需要的情况下,该对象将使用动态内存分配来增大缓冲区。

    ostringstream类有一个名为str()成员函数,该函数返回一个被初始化为缓冲区内容的字符串对象:
    string mesg = outstr.str();
    // returns string with formatted information

    使用str()方法可以“冻结”该对象,这样便不能将信息写入该对象中。

istringstream

    istringstream 类允许使用istream方法族读取 istringstream 对象中的数据,istringstream对象可以使用string对象进行初始化。

    假设facts是一个string对象,则要创建与该字符串相关联的istringstream对象,可以这样编写:
    istringstream instr(facts);  // use facts to initialize stream

    这样便可以使用istream方法读取instr中的数据。
    例如,如果instr包含大量字符格式的整数,则可以这样读取它们:
    int n;
    int sum = 0;
    while (instr >> n)
        sum += n;


    简而言之,istringstream 和 ostringstream 类使得能够使用 istream 和 ostream 类的方法来管理存储在字符串中的字符数据。

原创粉丝点击