/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste