This predicate is obsolete, please use read_string/3 and read_string/5.
A string of characters is read from the input stream Stream up to one character which occurs in the delimiter string Delimiters. This character is also consumed, but does not appear in the string which is unified with String.
Two symbolic Delimiters can be specified:
end_of_line a newline or carriage-return/newline sequence
end_of_file the end of the file/input
End of file always acts like a delimiter.
If Length is a variable, it is unified with the length of the string String. If Length is an integer, the number of characters read from the input stream Stream is limited by Length.
Success:
?- read_string(input, "123", Length, String).
abcdef2ghi
Length = 6
String = "abcdef"
yes.
?- read_string(input, " \t", Length, String).
one two
Length = 3
String = "one"
yes.
?- read_string(input, end_of_line, Length, String).
abcdefghi
Length = 9
String = "abcdefghi"
yes.
?- read_string(input, end_of_line, 6, String).
abcdefghi
String = "abcdef"
yes.
?- open(file1, read, s).
yes.
?- system('cat file1').
abcd
yes.
?- read_string(s, "", Length, String).
Length = 5
String = "abcd\n" % Read up to end of file
yes.
% Code example: read lines from a file and return
% a list of strings, each string containing a line
get_lines(File, Lines) :-
open(File, read, S),
stream_get_lines(S, Lines),
close(S).
stream_get_lines(S, Lines) :-
( read_string(S, end_of_line, _, Line) ->
Lines = [Line|Ls],
stream_get_lines(S, Ls)
;
Lines = []
).
Fail:
?- open(string(""),read,s), read_string(s,"",L,String).
no (more) solution. % EOF - Error 190 - handler fails
Error:
read_string(Stream, "", Length, String). (Error 4).
read_string(stream, Dels, Length, String). (Error 4).
read_string("stream", "", Length, String). (Error 5).
read_string(stream, 12, Length, String). (Error 5).
read_string(stream, "", "abc", String). (Error 5).
read_string(stream, "", Length, 12). (Error 5).
read_string(stream, stop, Length, String). (Error 6).
read_string(output, "", Length, String). (Error 192).
read_string(atom, "", Length, String). (Error 193).