how to replace sscanf in C++,using <string>s

M

Mark

I want to replace the following line:

sscanf(mybuf,"%s=%s\n",sz1,sz2);

with something that produces the same effect, only with
dynamic storage i.e string s which is safer.

I might try this:

sscanf(mybuf.c_str(),"%s=%s\n",string1.c_str(),string2.c_str());

but unsuprisingly this causes an error at runtime since there is nothing to
stop a memory overrun happening.Additionally there is no compile time check
as sscanf uses varargs.

Can anyone recommend the quickest way of acheiving this, short of writing
my own parser.

Mark
 
V

Victor Bazarov

Mark said:
I want to replace the following line:

sscanf(mybuf,"%s=%s\n",sz1,sz2);

with something that produces the same effect, only with
dynamic storage i.e string s which is safer.

I might try this:

sscanf(mybuf.c_str(),"%s=%s\n",string1.c_str(),string2.c_str());

but unsuprisingly this causes an error at runtime since there is nothing to
stop a memory overrun happening.Additionally there is no compile time check
as sscanf uses varargs.

Can anyone recommend the quickest way of acheiving this, short of writing
my own parser.

Something similar to

string::size_type eq = mybuf.find('=');
string string1 = mybuf.substr(0, eq), string2 = mybuf.substr(eq+1);

V
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,566
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top