C++ 用引号写缓冲区的一部分最好的方法是什么?

C++ 用引号写缓冲区的一部分最好的方法是什么?,c++,sql,buffer,ostream,quoting,C++,Sql,Buffer,Ostream,Quoting,例如,我有一些缓冲区:const char*buf和下一个内容mysql数据包: 72 00 00 00 select * from `db` where (`name` = "Bill's car") 我只需要用引号向ostream发送查询。所以,结果应该是: select * from `db` where (`name` = \"Bill\'s car\") 我知道,我认为这将是一个完美的例子,说明何时使用正则表达式。像这样的事情应该做: std::copy(buffer + inde

例如,我有一些缓冲区:const char*buf和下一个内容mysql数据包:

72 00 00 00 select * from `db` where (`name` = "Bill's car")
我只需要用引号向ostream发送查询。所以,结果应该是:

select * from `db` where (`name` = \"Bill\'s car\")

我知道,我认为这将是一个完美的例子,说明何时使用正则表达式。

像这样的事情应该做:

std::copy(buffer + index_of_start_of_sql, buffer + index_of_end_of_sql, std::ostream_iterator<char>(std::cout, ""));
这会将缓冲区的内容逐字符复制到输出流中,在本例中为std::cout。你不必担心如何处理报价

您只需要确保sql块的两个索引start和end是正确的


注意:这将打印出缓冲区中的内容,但不会转义引号。如果需要转义引号,则需要采取不同的方法。e、 g.使用for_each和自定义函子检查字符是否为“或”,并根据需要转义…

这里不清楚要问什么..最初,我想解析mysql客户端数据包来获取queryCan你能提供另一个例子吗?这是来自一个做SQL语句的公司的员工吗?是否有一个宗教信仰认为正则表达式是拯救一切的工具?这是另一个问题的答案。如何从-=比尔的汽车中提取比尔的汽车。因此,正则表达式将是最简洁的答案。