Wczytywanie danych z pliku

Odpowiedz Nowy wątek
2019-04-19 17:42
0

Witam mam pytanie bo sam już się gubię... Szukałem na cpp0x i w google i znalazłem kilka rzeczy ale części zupełnie nie rozumiem a jedna którą zrozumiałem nie działa... Mam przykładowy plik txt o następującej zawartości:
2016-10-07 4859 14 Silos IX

Jest podobnych linijek ok 200stu. I teraz pytanie jak mam wczytac zawartosc do osobnych zmiennych z vectrora?

Przykladowo tworze 7 wektorów, rok, miesiąc, dzień, waga, numer_dost, cel, (opcjonalnie) numer_cel. Teraz muszę wczytac wszystkie linijki do tych wektorów...

Ale nie mam pojęcia jak rozpocząć pobieranie danych tak żebym mógł wyznaczyć miejsce przeznaczenia + żeby po tych spacjach i - przenosiło się do następnej zmiennej.

Prosiłbym o wyrozumiałość ponad 3 godziny szukam sam dopiero teraz jak już wątpię czy sobie poradzę proszę was o pomoc.

edytowany 1x, ostatnio: TenAnonim, 2019-04-19 17:42

Pozostało 580 znaków

2019-04-19 17:49
kq

Nie lepiej użyć jednego wektora struktur?

struct whatever
{
    std::string date;
    int unknown1;
    int unknown2;
    std::string silos;
    std::string unknown3;
};

auto main() -> int
{
    std::vector<whatever> whatevers;
    std::ifstream file("whatevers.txt");
    std::string line;
    while(std::getline(std::cin, line)) {
        std::stringstream ss{line};
        whatever w;
        ss >> w.date >> w.unknown1 >> w.unknown2 >> w.silos >> w.unknown3;
        whatevers.push_back(w);
    }
}

Coś takiego. Pisane z palca, więc mogą być błędy.


edytowany 1x, ostatnio: kq, 2019-04-19 17:49
Hmm a potem zgaduje ze date po prostu podzielic, ok zobaczę co mi wyjdzie dzięki. - TenAnonim 2019-04-19 17:53
Nie doczytałem, że chcesz datę dzielić. Tak, to powinno być proste. - kq 2019-04-19 17:54
jak się mówi na funkcje w których używamy tego operatora strzałki ->? bo nie wiem czy jest polski odpowiednik (a nawet po angielsku nie jestem pewien jak je nazywać), a póki co wiem tyle, że to alternative function syntax i tyle :D Czy jest sens w używaniu ich jeśli nie ma nigdzie decltype? - Sunnydev 2019-04-19 18:05
trailing return type, nie ma sensu - ale to przykład z palca na forum to można się zabawić ;​) I jest formalnie poprawne - kq 2019-04-19 18:07
nie no jasne, bo to w zasadzie to samo co int main(), tylko jak pierwszy raz to zobaczyłem, to się nawet wystraszyłem, bo myślałem, że to przeciążony operator dostępu, który próbuje się dostać do jakiegoś typu danych (sayy whaat). trailing return type... o jezu XD lektura się szykuje :) - Sunnydev 2019-04-19 18:12

Pozostało 580 znaków

2019-04-19 18:08
1
struct Trasport
{
    std::time_t date;
    double weight;
    std::string address;
};

auto load(std::istream& input) -> std::vector<Trasport>
{
    std::vector<Trasport> result;
    std::string line;
    while(std::getline(input, line)) {
        std::stringstream ss{line};
        Trasport trans;
        std::tm t;
        if ((ss >> std::get_time("%Y-%m-%d") >> trans.weight)
            && std::getline(ss >> std::ws, trans.address)) {
            trans.date = std::mktime(t);
            result.push_back(trans);
        } else {
           std::cerr << "Failed to read: " << line << '\n';
        }
    }
    return result;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: MarekR22, 2019-04-19 18:12
Linijka 16 wydaje się lekko przekombinowana :​) - kq 2019-04-19 18:09
fakt za długa, teraz jest lepiej. - MarekR22 2019-04-19 18:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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