digitalmars.D.learn - Formatted read of tokens?
- Jerry (15/15) Jun 17 2014 Hi all,
- bearophile (5/8) Jun 17 2014 In you can use byLine, followed by a split, and then assignment
- Jerry (3/11) Jun 17 2014 I actually can't use byLine in this instance. I'm really wanting the %s
- John Colvin (3/18) Jun 17 2014 If you really need/want fscanf behaviour then just use it:
- Jerry (10/29) Jun 17 2014 Thanks, I forgot the obvious.
Hi all,
I'm porting some C++ code into D that uses istream to read lines like
label 3
where there can spaces or tabs between the 2 fields. In c++, this is:
string l;
int i;
istr >> l >> i;
What's the equivalent in D? It appears that D formatted read for
strings grabs everything up to a newline and doesn't support whitespace
tokenization.
If I do
f.readf("%s %s", &l, &i);
it fails if the whitespace is a tab.
Thanks
Jerry
Jun 17 2014
Jerry:
If I do
f.readf("%s %s", &l, &i);
it fails if the whitespace is a tab.
In you can use byLine, followed by a split, and then assignment
of the pieces, followed by to!int where necessary.
Bye,
bearophile
Jun 17 2014
"bearophile" <bearophileHUGS lycos.com> writes:Jerry:I actually can't use byLine in this instance. I'm really wanting the %s behavior of scanf().If I do f.readf("%s %s", &l, &i); it fails if the whitespace is a tab.In you can use byLine, followed by a split, and then assignment of the pieces, followed by to!int where necessary.
Jun 17 2014
On Tuesday, 17 June 2014 at 13:16:38 UTC, Jerry wrote:"bearophile" <bearophileHUGS lycos.com> writes:If you really need/want fscanf behaviour then just use it: import core.stdc.stdio : fscanf;Jerry:I actually can't use byLine in this instance. I'm really wanting the %s behavior of scanf().If I do f.readf("%s %s", &l, &i); it fails if the whitespace is a tab.In you can use byLine, followed by a split, and then assignment of the pieces, followed by to!int where necessary.
Jun 17 2014
"John Colvin" <john.loughran.colvin gmail.com> writes:On Tuesday, 17 June 2014 at 13:16:38 UTC, Jerry wrote:Thanks, I forgot the obvious. It would be nice to have a way to do the same thing in D formatted reading. Does it seem like it would be useful to specify this kind of thing? For example, you could have: %' ' grabs all isWhite() chars %t reads a single token - all chars !isWhite() Any takers? Jerry"bearophile" <bearophileHUGS lycos.com> writes:If you really need/want fscanf behaviour then just use it: import core.stdc.stdio : fscanf;Jerry:I actually can't use byLine in this instance. I'm really wanting the %s behavior of scanf().If I do f.readf("%s %s", &l, &i); it fails if the whitespace is a tab.In you can use byLine, followed by a split, and then assignment of the pieces, followed by to!int where necessary.
Jun 17 2014








Jerry <jlquinn optonline.net>