I don't know how implementation independent this code is, but this works for me in SWI-Prolog:

read_string(String) :-
    current_input(Input),
    read_line_to_codes(Input, Codes),
    string_codes(String, Codes).


Sample input and output:

?- read_string(X).
|: Test!
X = "Test!".


Prolog, working with capital letter
Stifle counters activated abilities. Quirion Ranger has an activated ability that can only be activated once each turn. Does the ability count as being activated for the turn if it was stifled?
