www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to convert a string command line argument to an int?

reply BoQsc <vaidas.boqsc gmail.com> writes:
I tried to use `std.conv.parse(args[2])`,

```
import std.stdio;

import std.conv;

  void main(string[] args){

	if (args.length > 1) {
		writeln(broadcastSettingChange(args[1]));
		if (args.length == 2) {
		// TODO: second argument needs parse to uint
			writeln(broadcastSettingChange(args[1], 
std.conv.parse(args[2])));
		
		}
		
	} else {
	
		writeln(broadcastSettingChange());
	}
	write(args.length > 1);


  }
```



```
(21): Error: template `std.conv.parse` cannot deduce function 
from argument types `!()(string)`
.\..\..\src\phobos\std\conv.d(2263):        Candidates are: 
`parse(Target, Source, Flag doCount = No.doCount)(ref Source 
source)`
.\..\..\src\phobos\std\conv.d(2382):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s)`
.\..\..\src\phobos\std\conv.d(2804):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source 
source, uint radix)`
.\..\..\src\phobos\std\conv.d(2973):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s)`
.\..\..\src\phobos\std\conv.d(3084):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source 
source)`
.\..\..\src\phobos\std\conv.d(3776):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s)`
.\..\..\src\phobos\std\conv.d(3833):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s)`
.\..\..\src\phobos\std\conv.d(3918):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s)`
.\..\..\src\phobos\std\conv.d(4031):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s, 
dchar lbracket = '[', dchar rbracket = ']', dchar comma = ',')`
.\..\..\src\phobos\std\conv.d(4218):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s, 
dchar lbracket = '[', dchar rbracket = ']', dchar comma = ',')`
.\..\..\src\phobos\std\conv.d(4327):                        
`parse(Target, Source, Flag doCount = No.doCount)(ref Source s, 
dchar lbracket = '[', dchar rbracket = ']', dchar keyval = ':', 
dchar comma = ',')`
WM_SETTINGCHANGE.d(21):        All possible candidates are marked 
as `deprecated` or ` disable`
Failed: 
["C:\\Users\\Windows10\\Desktop\\dmd2\\windows\\bin\\dmd.exe", 
"-v", "-o-", "WM_SETTINGCHANGE.d", "-I."]
```
Mar 02 2022
parent MoonlightSentinel <moonlightsentinel disroot.org> writes:
On Thursday, 3 March 2022 at 07:32:24 UTC, BoQsc wrote:
 I tried to use `std.conv.parse(args[2])`,
 [...]
 But I'm getting this error
The code doesn't declare the type to be parsed, use `parse!uint(...)`. But `to!uint` seems more appropriate for your code because `parse` ignores non-number characters after the number, e.g. ```d void main() { string input = "123abc"; writeln(parse!uint(input)); // 123 } ```
Mar 02 2022