From: "Nick Roberts" <nick.roberts@acm.org>
Subject: Re: reading a text file into a string
Date: Thu, 15 Jul 2004 20:18:35 +0100
Date: 2004-07-15T20:18:35+01:00 [thread overview]
Message-ID: <opsa6089kpp4pfvb@bram-2> (raw)
In-Reply-To: 40f6bf21@dnews.tpgi.com.au
On Fri, 16 Jul 2004 03:27:57 +1000, zork <zork@nospam.com> wrote:
> hi, i would like to read a whole text file into a string. I thought of
> using
> an unbounded_string for this:
>
> ----------
> c, char: character;
> text : unbounded_string;
> ...
> -- read in text file
> while not end_of_file ( File ) loop
> Get ( File, c );
> append ( text, c );
> end loop;
> ...
> put ( to_string ( text ) ); -- display content of unbounded_string
>
> -- process text
> for i in 1 .. length ( text ) loop
> char := element ( text, i );
> ...
> end loop;
> -----------
>
> ... is this the general way of going about it? or is there a more
> prefered
> method of reading in a whole text file (into whatever format) for
> processing?
It is usual to read and process information from files a piece at a time.
Quite often a file is read a piece at a time, each piece is interpreted in
some way, and then some structure is built up in memory from the
interpreted pieces. Then, typically, further processing is done using the
whole structure.
It is unusual to read an entire text file into a string in memory.
However, sometimes this may be a quick and convenient technique for
achieving results in a hurry. An unbounded string will generally be the
appropriate data structure to use for this purpose. The problem you do not
address with the code you suggest above -- as another poster has pointed
out -- is that of line breaks. One easy possibility might be to insert:
if End_of_Line(File) then
Append( text, Ada.Characters.Latin_1.NUL );
Skip_Line(File);
end if;
between the Get and the append. Line breaks are then indicated by the NUL
character, and could be processed as such. This should work provided the
file itself does not contain any NULs.
--
Nick Roberts
next prev parent reply other threads:[~2004-07-15 19:18 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-15 17:27 reading a text file into a string zork
2004-07-15 17:49 ` Marius Amado Alves
2004-07-15 19:57 ` Nick Roberts
2004-07-15 17:59 ` Marius Amado Alves
2004-07-15 19:18 ` Nick Roberts
2004-07-15 19:18 ` Nick Roberts [this message]
2004-07-15 20:02 ` Nick Roberts
2004-07-16 1:23 ` Jeffrey Carter
2004-07-16 2:20 ` Steve
2004-07-16 2:26 ` Steve
2004-07-16 16:16 ` Jeffrey Carter
2004-07-16 17:45 ` Nick Roberts
2004-07-16 21:19 ` Randy Brukardt
2004-07-17 2:27 ` Robert I. Eachus
2004-07-17 11:31 ` Mats Weber
2004-07-17 15:52 ` Robert I. Eachus
2004-07-17 22:38 ` Jeffrey Carter
2004-07-18 13:44 ` zork
2004-07-19 8:07 ` Dale Stanbrough
2004-07-19 8:58 ` Martin Dowie
2004-07-21 0:17 ` Robert I. Eachus
2004-07-21 21:39 ` Randy Brukardt
2004-07-22 22:34 ` Robert I. Eachus
2004-07-23 0:49 ` Randy Brukardt
2004-07-23 21:56 ` Nick Roberts
2004-07-24 0:34 ` tmoran
2004-07-24 1:16 ` Nick Roberts
2004-07-24 1:42 ` Randy Brukardt
2004-07-24 15:14 ` Nick Roberts
2004-07-26 23:48 ` Randy Brukardt
2004-07-27 12:08 ` Nick Roberts
2004-07-27 23:24 ` Robert I. Eachus
2004-07-29 0:55 ` Randy Brukardt
2004-07-29 0:53 ` Randy Brukardt
2004-07-29 7:25 ` Martin Dowie
2004-07-29 20:08 ` Robert I. Eachus
2004-07-30 0:14 ` tmoran
2004-07-24 2:56 ` Robert I. Eachus
2004-07-19 11:51 ` Ada2005 (was " Peter Hermann
2004-07-19 12:51 ` Dmitry A. Kazakov
2004-07-19 13:01 ` Nick Roberts
2004-07-19 13:35 ` Martin Dowie
2004-07-19 17:22 ` Nick Roberts
2004-07-19 23:50 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox