|
|
Let's say we wanted to write a program, called cleanup,
which changed all occurrences of certain words to certain other words.
And let's
say we wanted to keep the file in core
to do some in-core processing.
We might write it as follows:
main()
{
String old[4];
String new[4];
old[0]="Rhodesia"; new[0]="Zimbabwe";
old[1]="Alcindor"; new[1]="Abdul-Jabbar";
old[2]="Congo"; new[2]="Zaire";
old[3]="Bambergers"; new[3]="Macys";
String in;
String out;
while(cin >> in) {
for(int i=0;i<3;i++)
if(in == old[i])
in = new[i];
out += in;
char c;
while((c=cin.peek())==' ' ||
c=='\ t' || c=='\ n') {
cin.get(c);
out += c;
}
}
cout << out;
}
This is a perfectly good way of accomplishing this.
However, if the file is
large, some time will be taken up re-allocating space as
out_file grows larger. In cases like this, the
user can gain some efficiency by changing the above declaration of
out_file to be: String out_file; out_file.reserve(FLSIZ);
where FLSIZ
is the approximate size of the file.
Hint: Use reserve when the String will be
long, you have an idea how long the String will end up,
and the String is appended
to in small increments.