What is the best way to write a part of buffer with quoting?
For exaplme, I have some buffer : const char* buf with next content (mysql packet):
72 00 00 00 select * from `db` where (`name` = "Bill's car")
and i need to write to ostream only query with quoting. So, result should be next:
select * from `db` where (`name` = \"Bill\'s car\")
I kno开发者_StackOverflow中文版w, that << quote << will make quoting and ostream.write(buf,len) will write part I need.
But what the best solution for both?
Something like this ought to do:
std::copy(buffer + index_of_start_of_sql, buffer + index_of_end_of_sql, std::ostream_iterator<char>(std::cout, ""));
This copies the contents of the buffer character by character to the output stream (in this case std::cout). You don't need to worry about handling quotes then.
The only things you need make sure are correct are the two indexes (start and end of chunk of sql).
NOTE: this will print out what is in the buffer, but will not escape the quotes. If you need to escape the quotes, then you'll need to take a different approach. e.g. use for_each and a custom functor to check if character is ' or " and escaping as necessary...
加载中,请稍侯......
精彩评论