1. 程式人生 > >C++ 輸入輸出流之字串流

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;
    }
擴充套件閱讀: