weird formattedRead
    Oleg B 
    code.viator at gmail.com
       
    Fri Apr  9 16:11:26 UTC 2021
    
    
  
Hello, I have some doubts about working `formattedRead` with 
space chars.
Example:
```d
import std : formattedRead, DateTime, stderr, each;
DateTime parseDT(string str)
{
     int d,mo,y, h,m,s;
     formattedRead!"%d/%d/%d %d:%d:%d"(str, d,mo,y, h,m,s);
     return DateTime(y,mo,d, h,m,s);
}
void tryParse(string s)
{
     try
     {
         auto dt = parseDT(s);
         stderr.writefln!"valid '%s': %s"(s, dt);
     }
     catch (Exception e)
         stderr.writefln!"INVALID '%s': %s"(s, e.msg);
}
void main()
{
     auto vs = [
         "",
         "1",
         "1/1",
         "1/1/1",
         "1/1/1 1",
         "1/1/1 1:1",
         "1/1/1 1:1:1",
	];
     vs.each!tryParse;
}
```
outputs:
```
INVALID '': 0 is not a valid month of the year.
INVALID '1': parseToFormatSpec: Cannot find character '/' in the 
input string.
INVALID '1/1': parseToFormatSpec: Cannot find character '/' in 
the input string.
valid '1/1/1': 0001-Jan-01 00:00:00 <<< see here
INVALID '1/1/1 1': parseToFormatSpec: Cannot find character ':' 
in the input string.
INVALID '1/1/1 1:1': parseToFormatSpec: Cannot find character ':' 
in the input string.
valid '1/1/1 1:1:1': 0001-Jan-01 01:01:01
```
Is space a special char for `formattedRead` and it simple stop 
parse without throwing exception if not found space (that 
represented in fmt string)?
Have `formattedRead` any other special chars?
Or it's bug?
    
    
More information about the Digitalmars-d-learn
mailing list