Function split_string (o2scl)¶
-
void o2scl::split_string(std::string str, std::vector<std::string> &sv)¶
Split a string into words using whitespace for delimiters and (partially) respecting quotes.
This function separates a string into words, and handles words that begin with a
. Strings like"</tt> by adding more words until finding
one which ends with another <tt>"
get parsed as “this”, “is”, “a”, “test” and strings likethis is a test
get parsed as “this is”, “a”, “test”."this is" a test
This is used to reformat command descriptions and help text for the screen width in cli::comm_option_help(), to process lines read from a file in cli::comm_option_run(), and to process input in cli::run_interactive().
Todo
In function split_string(), the rules surrounding spaces and quotes are not well documented.
Future: Replace with a better algorithm. Should quotes be escaped?
Note
The string vector is not emptied before processing, and entries from
strare added to the end ofsv.Note
The parsing algorithm here is simple-minded and can produce unexpected results in several ways. For example, it may not properly handle nested quotes, like
."""test" test2"
test3"