Smartest way to read a number?

Tobias Brandt tob.brandt at googlemail.com
Thu Nov 10 13:58:24 PST 2011


import std.stdio;

T readNumber(T)()
{
    T result;
    stdin.readf("%s", &result);
    return result;
}

Throws a ConvException if the input string wasn't in the right format.

On 10 November 2011 22:48, Fabian <talk2fab at online.de> wrote:
> Hey guys.
>
> I just want to write a few console applications. Usualy I have to read numbers
> to calculate some values. But what's the smartest way to read and convert the
> input?
>
> I've coded these lines:
>
> import std.stdio, std.string, std.conv;
>
> T readNumber(T)()
> {
>        string buffer;
>        stdin.readln(buffer);
>        buffer = chomp(buffer);
>
>        if(isNumeric(buffer))
>        {
>                return parse!T(buffer);
>        }
>        else
>        {
>                throw new Exception("Input is not a number!");
>        }
> }
>
> void main()
> {
>        try
>        {
>                int n = readNumber!int();
>                writeln(n);
>
>                float f = readNumber!float();
>                writeln(f);
>        }
>        catch(Exception e)
>        {
>                writeln(e.msg);
>        }
> }
>
> Can I use that function or is there a cleaner way to do this job?
>
> Greetings
> Fabian
>


More information about the Digitalmars-d-learn mailing list