------------------------------------------------
Artikli vo magacin za obleka
------------------------------------------------
Vo magacinot ima vkupno 5 artikli
------------------------------------------------
Sifra : 3
Opis : opis2
Edinecna cena : 212
Vlezna kolicina : 2
Izlezna kolicina : 0
Danocna stapka : 0
Iznos : 424
Datum na vlez : 20324
------------------------------------------------
Sifra : 3
Opis : 54
Edinecna cena : 123
Vlezna kolicina : 12
Izlezna kolicina : 0
Danocna stapka : 0
Iznos : 1476
Datum na vlez : 120915
------------------------------------------------
Sifra : 3
Opis : opsi2
Edinecna cena : 12
Vlezna kolicina : 324
Izlezna kolicina : 0
Danocna stapka : 0
Iznos : 3888
Datum na vlez : 570509
------------------------------------------------
Sifra : 2
Opis : vopi
Edinecna cena : 2
Vlezna kolicina : 2
Izlezna kolicina : 0
Danocna stapka : 0
Iznos : 4
Datum na vlez : 951230
------------------------------------------------
Sifra : 1
Opis : opis1
Edinecna cena : 2
Vlezna kolicina : 2
Izlezna kolicina : 0
Danocna stapka : 0
Iznos : 4
Datum na vlez : 101
------------------------------------------------
The above is a file called "directory.dat" and I want to know how can I take off the integer of a specific line containing a specific text? For example, if I want to make a sum of all the lines with "Edinecna cena", how can I specifically get all integers from those lines only?
You can read your file line-by-line (the proper approach without eof()
is suggested by 0x499602D2):
ifstream dir("directory.dat");
string line;
while(getline(dir, line)){
//(process the line)
}
Check whether your line (string priceLn = "Edinecna cena : ";
) matches to the beginning of the line, and extract the price:
// process the line:
if(line.find(priceLn)==0){
price = stoi(line.substr(priceLn.size()));
}
PS: strncmp()
can incur in smaller overhead while reading the file. We can rewrite the if statement like this:
if(line.size() >= priceLn.size() &&
strncmp(line.c_str(), priceLn.c_str(), priceLn.size()) == 0) {...}