Witam z racji ze moje umiejetności w C++ sa porównywalne do w zasadzie do niczego. Przyszedłem się spytać bardziej doświadczonych "wyjadaczy". Mianowicie, czy jest taka możliwość abym zapisal sobie w pliku tekstowym np: 1g brokuly - 5g weglowodanów i potem gdy po odpaleniu programu sobie wczyta to z okreslona iloscia. I załózmy ze podczas robienia obiadu ja wpisze brokułu lub cos co jest przypisane i mi to wczyta.
Dobiero zaczałem sie uczyć (przeszło 2 tygodnie) i nie wiem jak to zrobic :P
Z góry dzieki za pomoc.
0
6
Da się. Osobiście zrobiłbym to wyrażeniem regularnym.
Np tak:
#include <iostream>
#include <regex>
using namespace std;
int main() {
regex r(R"((\d+)(\w+)\s+(\w+)\s*-\s*(\d+)(\w+)\s+(\w+))");
smatch m;
string line;
while(getline(cin, line)){
if(regex_search(line, m, r))
cout
<< "amount: " << m[1] << endl
<< "mass metric: " << m[2] << endl
<< "food: " << m[3] << endl
<< "---" << endl
<< "amount: " << m[4] << endl
<< "mass metric: " << m[5] << endl
<< "goodness: " << m[6] << endl;
}
return 0;
}
In | Out |
---|
1g brocoils - 5g carbohydrates
|
amount: 1
mass metric: g
food: brocoils
---
amount: 5
mass metric: g
goodness: carbohydrates
http://ideone.com/y7fnmw
Przetestuj sam ;)
Uprzedzając pytanie dotyczące opisu tego wyrażenia regularnego:
(\d+)(\w+)\s+(\w+)\s*-\s*(\d+)(\w+)\s+(\w+)
\d
- cyfra (digit)
\w
- litera (word character)
\s
- biały znak (whitespace)
+
- jeden lub więcej
*
- zero lub więcej
()
- grupa (przechwycenie)
0
Oooo własnie czegoś takiego szukałem. Dziękuje bardzo za pomoc !
@Edit Niestety po odpaleniu wywala błąd, że nie ma <regex> aktualnie moje środowisko to Code::Blocks.