Le 26/4/2005, "James Edward Gray II" <james / grayproductions.net> a ñÄrit: >I'm working with StringIO to write some test code and it is behaving >strangely. Check out this example: > >irb(main):001:0> require "stringio" >=> true >irb(main):002:0> fake_file = StringIO.new >=> #<StringIO:0x3119cc> >irb(main):003:0> fake_file.puts "This is a test." >=> nil >irb(main):004:0> fake_file.string >=> "This is a test.\n" >irb(main):005:0> fake_file.truncate(0) >=> 0 >irb(main):006:0> fake_file.string >=> "" >irb(main):007:0> fake_file.puts " <= Junk!" >=> nil >irb(main):008:0> fake_file.string >=> "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 <= >Junk!\n" > >Is that a bug? Yuck. > >I hand my "fake_file" off to some code to play with, but keep a >reference for my testing purposes. At times, I need to clear the >accumulated output, but as you can see truncate() is giving me fits. > >Can anyone suggest how I might clear the StringIO object, without >replacing it? I think #truncate simply memset()s the buffer but it does not change the position of the file pointer, so you would probably need to #seek 0, as well. >Thanks. > >James Edward Gray II E -- template<typename duck> void quack(duck& d) { d.quack(); }