Cześć, ostatnio dla potrzeb młodszego brata stwierdziłem, że stworzę prosty program sprawdzający umiejętność znajomości słówek z j. ang. Program ma odczytywać z pliku tekstowego odpowiednio słówka polskie i angielskie do dwóch osobnych tablic. Postanowiłem, że do pierwszej z tablic będę wczytywał kolejno pojedyncze znaki z linii aż do napotkania znaku "-", jednakże mam problem jak ustawić później pobieranie znaków do drugiej tablicy za pomocą tej funkcji. Mógłbym liczyć na jakieś sugestie(może jest na to jakiś lepszy sposób)?
0
1
Wczytaj całą linię, a następnie znajdź znak'-' i to co przed znakiem skopiuj do jednej tabeli to po tym znaku do drugiej.
0
Tak coś czułem, że wczytując całą linię będzie prościej. Dzięki :)
1
-
map<string,string>
- jeżeli nie uwzględniasz różnych znaczeń słów lubmap<string,vector<string>>
- polecam:
ifstream fin("vocabulary.txt"); string pl,en;
orazgetline(fin>>ws,pl,'-'); getline(fin>>ws,en);
mi się bardziej podoba jako:getline(getline(fin>>ws,pl,'-')>>ws,en);
- Czyli w sumie coś na kształt:
#include <string>
#include <vector>
#include <unordered_map>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
unordered_map<string,vector<string>> en_pl,pl_en;
ifstream fin("vocabulary.txt");
for(string en,pl;getline(getline(fin>>ws,pl,'-')>>ws,en);)
{
en_pl[en].push_back(pl); // z angielskiego na polski
pl_en[pl].push_back(en); // z polskiego na angielski
}
return 0;
}
0
Pierwszy raz zetknąłem się z tą klasą, ale wygląda na użyteczną, więc zaraz biorę się za przejrzenie dokumentacji. No i chyba czas zacząć korzystać częściej z std::vector. Dziękuję za pomocną odpowiedź, nauczę się czegoś nowego :D