• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Parsowanie pliku

Object Storage Arubacloud
0 głosów
558 wizyt
pytanie zadane 14 lutego 2020 w C i C++ przez amelia.cpp Obywatel (1,860 p.)

Cześć,

W jaki sposób mogę sparsować plik żeby zapisać wartości w oddzielnym zmiennych?
 

przykładowa linia z pliku:
2 John Smith 31

przypisanie do zmiennych:
number = 2
name = "John"
surname = "Smith"
age = 31

 

komentarz 14 lutego 2020 przez tkz Nałogowiec (42,000 p.)
O ile zawsze będzie imię i nazwisko, to możesz wczytać cin>>numer>>imie>>nazwisko>>wiek. Oczywiście sypie się gdy schemat się zmieni. Jeżeli jednak chcesz zrobić, to jak należy, to pobieramy linie, czytamy od początku do pierwszej spacji, czytamy od końca do pierwszej spacji. Mamy już dwie zmienne, następnie możemy zastosować XOR'a dla zbiorów i w ten sposób otrzymamy imiona.
komentarz 14 lutego 2020 przez amelia.cpp Obywatel (1,860 p.)
Chętnie zastosuje pierwszy sposób tylko jeżeli mam plik który ma kilka takich linii i chcę każdą linię tak rozdzielić to jak to zrobić?
komentarz 14 lutego 2020 przez tkz Nałogowiec (42,000 p.)
#include <iostream>
#include <fstream>
#include <tuple>
#include <vector>
#include <string_view>

int main(void)
{
    std::ifstream file("temp.txt");
    unsigned number;
    std::string name;
    std::string secondName;
    unsigned age;
    std::vector<std::tuple<unsigned, std::string_view, std::string_view, unsigned>> dataWithFile;
    while (file >> number >> name >> secondName >> age)
    {
        dataWithFile.emplace_back(number, name, secondName, age);
    }
    for(const auto& [number, name, secondName, age] : dataWithFile)
    {
        std::cout<<number<<' '<<name<<' '<<secondName<<' '<<age<<'\n';
    }
    return 0;
}

dla 

2 John Smith 31
4 John Smith 32
5 John Smith 33

 

komentarz 15 lutego 2020 przez j23 Mędrzec (194,920 p.)

@tkz, twój kod ma poważny błąd. Nieprawidłowo używasz klasy std::string_view, która powinna być "widokiem" istniejącego stringa, a w twoim kodzie tylko ostania pozycja będzie zawierać poprawny "widok".

komentarz 15 lutego 2020 przez tkz Nałogowiec (42,000 p.)
O ile dobrze rozumiem, wystarczy zamienić w tuplu string_view, na string?
komentarz 15 lutego 2020 przez j23 Mędrzec (194,920 p.)
Tak.
komentarz 15 lutego 2020 przez amelia.cpp Obywatel (1,860 p.)

@tkz, Dzięki, działa!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,053 wizyt
pytanie zadane 27 października 2016 w JavaScript przez Newperty Początkujący (280 p.)
0 głosów
0 odpowiedzi 132 wizyt
pytanie zadane 26 października 2020 w Inne języki przez Lyokoheros Początkujący (340 p.)
0 głosów
0 odpowiedzi 161 wizyt
pytanie zadane 26 października 2019 w PHP przez Tomeksz104 Początkujący (280 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...