Pseudo dietetyk w c++

0

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1