names=new,open
visibility=public
kind=defined

--- new(string = '', mode = 'r+')                 -> StringIO
--- open(string = '', mode = 'r+')                -> StringIO
--- open(string = '', mode = 'r+') {|io| ... }    -> StringIO

StringIO オブジェクトを生成して返します。

与えられた string がフリーズされている場合には、mode はデフォルトでは読み取りのみに設定されます。
ブロックを与えた場合は生成した StringIO オブジェクトを引数としてブロックを評価します。

@param string 生成される StringIO のデータを文字列で指定します。
              この文字列はバッファとして使われます。[[m:StringIO#write]] などによって、
              string 自身も書き換えられます。

@param mode [[m:Kernel.#open]] 同様文字列か整数で指定します。

@raise Errno::EACCES string がフリーズされていて、mode が書き込み可能に設定されている場合に発生します。

        require 'stringio'
         
        s = "foo"
        io = StringIO.new(s)
        p io.getc       # => 102
        p io.pos        # => 1
        p io.size       # => 3
        io << "bar"   
        p io.size       # => 4
        p s             # => "fbar"
        io.rewind
        p io.gets       # => "fbar"

        StringIO.open("hoge"){|io|
          p io.string   # => "hoge"
        }

