From octave-maintainers-request at bevo dot che dot wisc dot edu Tue Feb 6 22:42:47 2001 Subject: ISO C++ (partial) replacement for libio stream:scan From: "John W. Eaton" To: Mumit Khan Cc: octave-maintainers at bevo dot che dot wisc dot edu, khan@xraylith.wisc.edu Date: Tue, 6 Feb 2001 22:42:41 -0600 On 4-Feb-2001, Mumit Khan wrote: | Forgot to include this in my 6-part patchset. | | First cut at a working sscanf/fscanf functionality in C++ library | with libstdc++-v2/libio scan/form extension. The correct way to | fix this problem of course is either (1) write a complete scan and | form implementation based on libio, or (2) write a stream manipulator | that translates print-style format to stream style (preferred). Octave | makes (2) easy by pre-sorting all the format codes in advance. | | Very rudimentary, partial implementation just so I could get some work | done and run the tests. Now passes all the tests with newer compilers. | | Patch against Octave CVS 2001-02-02. | | Haven't tested anything other than trivial format specifiers, and haven't | even considered character classes yet. | | Regards, | Mumit | | Forgot to include this in my 6-part patchset. | | First cut at a working sscanf/fscanf functionality in C++ library | with libstdc++-v2/libio scan/form extension. The correct way to | fix this problem of course is either (1) write a complete scan and | form implementation based on libio, or (2) write a stream manipulator | that translates print-style format to stream style (preferred). Octave | makes (2) easy by pre-sorting all the format codes in advance. | | Very rudimentary, partial implementation just so I could get some work | done and run the tests. Now passes all the tests with newer compilers. | | Patch against Octave CVS 2001-02-02. | | 2001-02-03 Mumit Khan | | * oct-stream.cc (octave_scan): Implement, and specialize for | char*. Delete the old template instantiations. | (BEGIN_S_CONVERSION): Use strings instead of ostrstreambuf. | (octave_base_stream::do_scanf): Pass correct parameter to | do_scan_conv. I applied these patches. I also added // XXX FIXME XXX -- this needs to be fixed to handle formats which // specify a maximum width. above your new octave_scan function. Anyone want to take a shot at implementing it? I have no idea how to make it work. And, I used tmp = strsave (buf.c_str()); \ instead of tmp = new char[buf.length() + 1]; \ strcpy (tmp, buf.c_str()); \ Thanks, jwe