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

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,681
Members
48,796
Latest member
Greg L.

Latest Threads

Top