C++ Logo

std-proposals

Advanced search

Re: [std-proposals] regex over istreams

From: Phil Bouchard <boost_at_[hidden]>
Date: Thu, 20 Feb 2025 15:41:28 -0500
regex_match would get 1 more character on the need basis using in.get()
quite simply. If it fails then it would rewind the read pointer to where
it was.

I think that's a pretty efficient way of writing a decent parser.


On 2/20/25 14:20, Andre Kostur wrote:
> Perhaps if you’d also show how it’s anticipated to be used.
>
> And if it’s dependent on std::regex, I suspect a lot of complaints about
> the performance of std::regex will come up.
>
> On Thu, Feb 20, 2025 at 5:48 AM Phil Bouchard via Std-Proposals
> <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]>>
> wrote:
>
> __
>
> Greetings,
>
> Seems to me regex over istreams would be quite useful. Here's an
> inefficient implementation:
>
>
> inline std::istream& operator >> (std::istream& in, std::string
> & v)
> {
> static const std::regex string_regex(R"(^\"(.*?)\"$)");
>
> std::smatch match;
>
> std::string x;
>
> for (x += in.get(); in; x += in.get())
> if (std::regex_match(x, match, string_regex))
> {
> v = match[1].str();
>
> return in;
> }
>
> throw std::invalid_argument("Parse error.");
> }
>
> Is there any interests in such implementation?
>
>
> Regards,
>
>
> --
> Fornux Logo <https://www.fornux.com/>
> *Phil Bouchard* LinkedIn Icon
> <https://www.linkedin.com/in/phil-bouchard-5723a910/>
> Founder & CEO
> T: (819) 328-4743
> E: phil_at_[hidden] <mailto:phil_at_[hidden]>| www.fornux.com
> <http://www.fornux.com>
> 320-345 de la Gauchetière
> <https://www.google.com/maps/search/345+de+la%0D%0A++++++++++++++++++++++++Gaucheti%C3%A8re?entry=gmail&source=g> Ouest| Montréal (Qc), H2Z 0A2 Canada
>
> The Best Predictable C++ Memory Manager
> <https://static.fornux.com/c-superset/> Le message ci-dessus, ainsi
> que les documents l'accompagnant, sont destinés uniquement aux
> personnes identifiées et peuvent contenir des informations
> privilégiées, confidentielles ou ne pouvant être divulguées. Si vous
> avez reçu ce message par erreur, veuillez le détruire.
> This communication (and/or the attachments) is intended for named
> recipients only and may contain privileged or confidential
> information which is not to be disclosed. If you received this
> communication by mistake please destroy all copies.
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden] <mailto:Std-Proposals_at_[hidden]>
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
> <https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals>
>

-- 
Fornux Logo <https://www.fornux.com/>  
*Phil Bouchard*  LinkedIn Icon
<https://www.linkedin.com/in/phil-bouchard-5723a910/> 
Founder & CEO
T: (819) 328-4743
E: phil_at_[hidden]| www.fornux.com <http://www.fornux.com>
320-345 de la Gauchetière Ouest| Montréal (Qc), H2Z 0A2 Canada
The Best Predictable C++ Memory Manager
<https://static.fornux.com/c-superset/> Le message ci-dessus, ainsi que
les documents l'accompagnant, sont destinés uniquement aux personnes
identifiées et peuvent contenir des informations privilégiées,
confidentielles ou ne pouvant être divulguées. Si vous avez reçu ce
message par erreur, veuillez le détruire.
This communication (and/or the attachments) is intended for named
recipients only and may contain privileged or confidential information
which is not to be disclosed. If you received this communication by
mistake please destroy all copies.

Received on 2025-02-20 20:41:32