The following allow string ports to be opened by analogy to R4R* file port facilities:
With string ports, the port-encoding is treated differently than other types of ports. When string ports are created, they do not inherit a character encoding from the current locale. They are given a default locale that allows them to handle all valid string characters. Typically one should not modify a string port's character encoding away from its default.
Calls the one-argument procedure proc with a newly created output port. When the function returns, the string composed of the characters written into the port is returned. proc should not close the port.
Note that which characters can be written to a string port depend on the port's encoding. The default encoding of string ports is specified by the
%default-port-encodingfluid (see%default-port-encoding). For instance, it is an error to write Greek letter alpha to an ISO-8859-1-encoded string port since this character cannot be represented with ISO-8859-1:(define alpha (integer->char #x03b1)) ; GREEK SMALL LETTER ALPHA (with-fluids ((%default-port-encoding "ISO-8859-1")) (call-with-output-string (lambda (p) (display alpha p)))) ⇒ Throw to key `encoding-error'Changing the string port's encoding to a Unicode-capable encoding such as UTF-8 solves the problem.
Calls the one-argument procedure proc with a newly created input port from which string's contents may be read. The value yielded by the proc is returned.
Calls the zero-argument procedure thunk with the current output port set temporarily to a new string port. It returns a string composed of the characters written to the current output.
See
call-with-output-stringabove for character encoding considerations.
Calls the zero-argument procedure thunk with the current input port set temporarily to a string port opened on the specified string. The value yielded by thunk is returned.
Take a string and return an input port that delivers characters from the string. The port can be closed by
close-input-port, though its storage will be reclaimed by the garbage collector if it becomes inaccessible.
Return an output port that will accumulate characters for retrieval by
get-output-string. The port can be closed by the procedureclose-output-port, though its storage will be reclaimed by the garbage collector if it becomes inaccessible.
Given an output port created by
open-output-string, return a string consisting of the characters that have been output to the port so far.
get-output-stringmust be used before closing port, once closed the string cannot be obtained.
A string port can be used in many procedures which accept a port but which are not dependent on implementation details of fports. E.g., seeking and truncating will work on a string port, but trying to extract the file descriptor number will fail.