simple console input's not working...

Tower Ty towerty at msn.com.au
Fri Jun 6 04:09:31 PDT 2008


Mike Parker Wrote:

> SodiumFree wrote:
> > So i copy this code, pretty much straight from the book (page 139):
> > 
> > module inputTest;
> > import tango.io.Console;
> > 
> > void main(){
> >     Cout("What is your name? ").flush;
> >     auto name = Cin.readln;
> >     Cout("Hello ")(name).newline;
> > }
> > 
> > 
> > However when i try compiling, dmd spits out this error:
> > 
> > C:\d.stuff\inputTest>dmd inputTest.d
> > inputTest.d(6): function tango.io.Console.Console.Input.readln (char[],bool) does not match parameter types ()
> > inputTest.d(6): Error: expected 2 arguments, not 0
> > inputTest.d(7): function alias tango.io.Console.Console.Output.append (char[]) does not match parameter types (bool)
> > inputTest.d(7): Error: expected 0 arguments, not 1
> > 
> > 
> > Any idea what's going on?
> 
> Cin.readln (which is the method tango.io.Console.Console.Input.readln) 
> expects at least one argument -- a string in which to store the input. 
> You've given it nothing. The compiler reports this in the first error, 
> then keeps on compiling.
> 
> Second, 'name' is automatically inferred as a bool and not as a string 
> as you seem to intend it to be. You'll see in the documentation that 
> readln returns true if input is read and false if not. So the compiler 
> sees you trying to pass a bool value in the call to Cout when it expects 
> a string, resulting in the second error.
> 
> A look at the source for tango.io.Console should make the error messages 
> more clear. Console is a struct with the inner classes Input and Output. 
> Cin is an instance of Console.Input. Hence the 
> tango.io.Console.Console.Input.readln (char[],bool) in the error string. 
> In Console.output, the append method is aliased to opCall. That's what 
> allows the COut()() syntax. It also is the reason you see 
> tango.io.Console.Console.Output.append (char[]).
> 
> Your corrected code:
> 
> ======================================================
> import tango.io.Console;
> 
> void main()
> {
>      Cout("What is your name? ").flush;
>      char[] name;
>      if(Cin.readln(name))
>      {
>          Cout("Hello ")(name).newline;
>      }
> }
> ==================================================
> 

Good Mike , and this goes too
module test4;
import tango.io.Console;

void main(){
    Cout("What is your name? ").flush;
    char[] name;
    Cin.readln(name);
    char[] lead = "Hello ";
    Cout(lead)(name).newline;
}



More information about the Digitalmars-d-learn mailing list