|
| Problemer med at lave fileparse function i~ Fra : Christian Kristoffer~ |
Dato : 15-06-03 00:33 |
|
Hej alle igen
Nu bliver det snart helt pinligt at blive ved med at spørge på det samme
område.
Men jeg arbejder på en funktion som skal kunne returnere en hel linie
fra en textfil som den parser. Man angiver en streng, samt filnavn til
funktionen. Jeg ønsker som det sidste i denne funktion at vide hvilken
linje den ønskede string er på, og så anvende denne værdi til at kalde
en anden metode.
På forhånd tak
Christian
string Utils::getLineContainingThisString(const string textline, const
char filename[])
{
unsigned int lines = countTextLines2(filename);
cout << endl << "file has : " << lines << " lines" << endl; // til test
string array[lines];
string textlineToArray;
ifstream inputfile(filename);
if (!inputfile)
cout << "File not found !!!" << endl;
for (unsigned int i = 0 ; i < lines ; i++)
{
cout << endl << i << endl; // til test
getline(inputfile, textlineToArray);
array[i]=textlineToArray;
cout << textlineToArray; // til test
}
unsigned int lineNumber=0, pos, idx;
for (unsigned int i = 0 ; i < lines ; i++)
{
for (pos = 0 ; (idx = array[i].find(textline, pos)) -1; pos = idx
+ 1)
lineNumber++;
cout << lineNumber << endl;
}
cout << lineNumber << endl;
}
| |
Mogens Hansen (15-06-2003)
| Kommentar Fra : Mogens Hansen |
Dato : 15-06-03 07:02 |
|
"Christian Kristoffersen" <chrkrist@notyet.dk> wrote in message
news:bcgb7n$177b$1@news.cybercity.dk...
> Hej alle igen
>
> Nu bliver det snart helt pinligt at blive ved med at spørge på det samme
> område.
Du har fået hjælp af adskillige personer til at få løst dit problem, såvel i
denne tråd som i den tidligere tråd du startede.
Det er din opgave at prøve at læse og forstå de svar du har fået, og
eventuelt spørge yderligere til dele af svarene som du ikke forstår.
Prøv at læse, forstå, oversætte og køre de programmer som er kommet som
svar, og find ud af hvad det er du ikke forstår.
Prøv at fortælle hvad der præcist er dit problem. F.eks.:
* Programmet kan ikke oversætte
* Programmet kører ikke som forventet
>
> Men jeg arbejder på en funktion som skal kunne returnere en hel linie
> fra en textfil som den parser. Man angiver en streng, samt filnavn til
> funktionen. Jeg ønsker som det sidste i denne funktion at vide hvilken
> linje den ønskede string er på, og så anvende denne værdi til at kalde
> en anden metode.
Denne specifikation er væsentlig anderledes end hvad du oprindeligt spurgte
om i denne tråd.
Venlig hilsen
Mogens Hansen
| |
Bertel Brander (15-06-2003)
| Kommentar Fra : Bertel Brander |
Dato : 15-06-03 14:15 |
|
Christian Kristoffersen wrote:
> Hej alle igen
>
> Men jeg arbejder på en funktion som skal kunne returnere en hel linie
> fra en textfil som den parser. Man angiver en streng, samt filnavn til
> funktionen. Jeg ønsker som det sidste i denne funktion at vide hvilken
> linje den ønskede string er på, og så anvende denne værdi til at kalde
> en anden metode.
>
Når man har et nyt spørgsmål, bør man oprette en tråd.
>
> string Utils::getLineContainingThisString(const string textline, const
> char filename[])
> {
Man kan ikke returnere både en streng og et linie nummer fra en
funktion, så vi er nødt til at overføre den ene parameter som et
argument, det kunne f.ex se sådan ud:
string Utils::getLineContainingThisString(const string textline, const
char filename[], int *LineNr)
> unsigned int lines = countTextLines2(filename);
> cout << endl << "file has : " << lines << " lines" << endl; // til test
>
> string array[lines];
> string textlineToArray;
>
> ifstream inputfile(filename);
> if (!inputfile)
> cout << "File not found !!!" << endl;
>
>
>
>
> for (unsigned int i = 0 ; i < lines ; i++)
> {
> cout << endl << i << endl; // til test
> getline(inputfile, textlineToArray);
> array[i]=textlineToArray;
> cout << textlineToArray; // til test
> }
>
>
> unsigned int lineNumber=0, pos, idx;
>
>
> for (unsigned int i = 0 ; i < lines ; i++)
> {
Her skal der blot undersøges om linien indeholder den text der søges på,
hvis den gør det sættes *LineNr og linien returneres.
> for (pos = 0 ; (idx = array[i].find(textline, pos)) -1; pos = idx
> + 1)
> lineNumber++;
> cout << lineNumber << endl;
> }
>
> cout << lineNumber << endl;
>
Hvis vi når hertil, fandt vi ikke den text der blev søgt på, det må vi
så fortælle brugeren.
> }
Man kan kalde funktionen med:
std::string line;
int LineNr;
line = Utils::getLineContainingThisString("whatever", "myfile.ext",
&LineNr);
Jeg tror godt du selv kan indsætte de små stykker kode der mangler, hvis
ikke så send dit bedste bud og lad os se på sagen.
/b
| |
|
|