comp.lang.ada
 help / color / mirror / Atom feed
From: "Vincent Smeets" <No@Spam.org>
Subject: Fill string with multiple lines from standard_input
Date: Wed, 14 Aug 2002 21:34:53 +0200
Date: 2002-08-14T21:34:53+02:00	[thread overview]
Message-ID: <ajebhb$ndl$01$1@news.t-online.com> (raw)

Hallo,

How can I fill a string with multiple lines from the standard_input? I want
to have all the characters read from the input till a end of file in a
string.

In C I can do it like this:
    char buffer[1024];
    ssize_t length;

    length = read (1, buffer, sizeof (buffer));
    if (length < 0) {
        perror ("read");
        exit (1);
    }

I can do it with Get_Immediate:
    Buffer : String (1 .. 1024);
    Length : Natural;

    Length := 0;
    while not Ent_Of_File and Length < Buffer'Last loop
        Length := Length + 1;
        Get_Immediate (Buffer (Length));
    end loop;
This works but is very slow with GNAT 3.13p on Windows 2000.

I haven't tried sequential IO, but that is also character by character. I
want something to read a buffer at once. I have been thinking about using
streams. Something like:
    Buffer : String (1 .. 1024);

    String'Read (
        Text_IO.Text_Streams.Stream (Text_IO.Standard_Input),
        Buffer);
But here I don't know how much of the Buffer has been filled.

The last non portable design is to use a pragma import for the C "read"
function. It will work but I don't like it because it isn't portable.

Is the a nice Ada95 way to do this?





             reply	other threads:[~2002-08-14 19:34 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-14 19:34 Vincent Smeets [this message]
2002-08-14 20:37 ` Fill string with multiple lines from standard_input Stephen Leake
2002-08-15 17:57   ` Vincent Smeets
2002-08-15 20:47     ` Stephen Leake
2002-08-19 19:39       ` Vincent Smeets
2002-08-20 15:01         ` Stephen Leake
2002-08-20 18:26           ` Vincent Smeets
2002-08-20 19:46             ` tmoran
2002-08-21 12:50             ` Jean-Pierre Rosen
2002-08-21 19:19             ` Randy Brukardt
2002-08-25  0:34               ` AG
2002-08-21 14:37         ` Kevin Cline
2002-08-21 19:47           ` Robert Dewar
2002-08-22  7:40             ` Kevin Cline
2002-08-23 19:49               ` Peter Richtmyer
2002-08-22 20:36             ` Kevin Cline
2002-08-25  0:45               ` AG
2002-08-26  0:47                 ` Kevin Cline
2002-08-15  2:30 ` SteveD
2002-08-15 18:02   ` Vincent Smeets
2002-08-16  0:25     ` Robert Dewar
2002-08-15 19:07   ` Vincent Smeets
2002-08-15 21:49     ` chris.danx
2002-08-16 19:30       ` Ted Dennison
2002-08-17  2:26         ` Randy Brukardt
2002-08-17 10:24         ` Robert Dewar
2002-08-19 13:40           ` Ted Dennison
2002-08-20  0:03             ` Robert Dewar
2002-08-16 17:33 ` Alexei Polkhanov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox