I don't know how I missed this thread, but, alas I did.
I'm on the warpath to create a more well-rounded serial library. I've posted a thread http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1245549766 in which I describe creating an new underlying class (transparent to end users) which simply enhances any and all current serial classes.
With the new subclass, you can do things like:
mynumber = Serial.getnumber(HEX)
which gets an ASCII string of hexadecimal characters, and converts it into a number (stored into mynumber).
Serial.getstring(mystring, 40, '\n')
which gets a string (into mystring), either 40 characters long (no more, no less), or in the second case, gets a string up to a terminator (in this case a new line).
You can download the libraries from here:
Simply put the files (from Libraries/SerialComm/) into the arduino/hardware/cores/arduino folder/directory. This will overwrite the existing HardwareSerial.h/.cpp - so if you want, you should create a backup of the files.
I'll be adding an updated version of NewSoftSerial as well (it just requires changing the inheritance to SerialComm, and adding a new method called "peek").
I want to add a printf (scaled down from the existing one in stdio), but need to gauge the interest in it. Feedback welcome.