C++ 输入输出流之字符串流

  • 字符串流介绍
    • 字符串流以内存中用户定义的字符数组(字符串)作为输入输出对象。
    • 字符串流也有缓冲区,当缓冲区满了(或遇到换行符),流缓冲的数据一起存入字符数组。
  • 头文件<strstream>
  • 1. 建立输出字符串流对象
    • ostrestream的构造函数:
      • ostrestream::ostrstream(char *buffer, int n, int mode = ios::out);
      • buffer指字符串数组首元素的指针
      • n是流缓冲区的大小
      • iost::out是默认值
    • 建立输出字符串流对象与字符数组的关联:
      • ostrstream strout(cStr1, 20)

  • 2. 建立输入字符串流对象
    • istrstream的构造函数:
      • istrstream::istrstream(char *buffer)
      • istrstream::istrstream(char *buffer, int n)
      • buffer是指向字符数组首元素的指针
      • n是缓冲区的大小
    • 建立输入字符串流对象与字符数组的关联
      • istrstream strin(cStr2);    // 将cStr2字符数组中的全部数组作为输入字符串流的内容
      • istrstream strin(cStr2);    // 将cStr2字符数组中的全部数组作为输入字符串流的内容

  • 3. 建立输入输出字符串流对象
    • strstream的构造函数
      • strstream::strstream(char *buffer, int n, int mode)
    • 建立输入输出流对象鱼字符串流流的关联
      • strstream strio(cStr3, sizeof(cStr3), ios::in|ios::out);
      • 以字符数组cStr3为输入输出对象,缓冲区大小与数组cStr3相同
  • 举例:
    #include <strstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        char cStr[50] = "12 34 65 -23 -32 33 61 99 321 32";
        int nArray[10];
        cout << "Old cStr: " << cStr << endl;
    
        // 以字符串cStr作为输入流,建立strin与cStr的关联,缓冲区大小为字符串cStr的大小
        istrstream strin(cStr, sizeof(cStr));
        int i, temp;
        for (i = 0; i < 10; i++)
            strin >> nArray[i];
    
        // 输出读入的数组
        cout << "nArray: ";
        for (i = 0; i < 10; i++)
            cout << nArray[i] << " ";
        cout << endl;
    
        for (int i = 0; i < 5; i++)  // 数组旋转
        {
            temp = nArray[i];
            nArray[i] = nArray[9 - i];;
            nArray[9-i] = temp;
        }
    
        ostrstream strout(cStr, sizeof(cStr));
        for (i = 0; i < 10; i++)
            strout << nArray[i] << " ";
        strout << endl;             // 加入'\0'
        
        cout << "New cStr: " << cStr << endl; // 输出最新的cStr
    
        return 0;
    }
扩展阅读:
阅读更多
文章标签: 字符串流
个人分类: C++ 基础笔记
上一篇C++ 输入输出流之文件操作和文件流
下一篇C++ 异常处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭