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

Parsowanie pliku

Cloud VPS
0 głosów
1,100 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,040 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,040 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 (195,240 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,040 p.)
O ile dobrze rozumiem, wystarczy zamienić w tuplu string_view, na string?
komentarz 15 lutego 2020 przez j23 Mędrzec (195,240 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,222 wizyt
pytanie zadane 27 października 2016 w JavaScript przez Newperty Początkujący (280 p.)
0 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 26 października 2020 w Inne języki przez Lyokoheros Początkujący (340 p.)
0 głosów
0 odpowiedzi 185 wizyt
pytanie zadane 26 października 2019 w PHP przez Tomeksz104 Początkujący (280 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...