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

Parsowanie pliku

HackNation - ogólnopolski hackathon
0 głosów
1,156 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,220 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,220 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,263 wizyt
pytanie zadane 27 października 2016 w JavaScript przez Newperty Początkujący (280 p.)
0 głosów
0 odpowiedzi 186 wizyt
pytanie zadane 26 października 2020 w Inne języki przez Lyokoheros Początkujący (340 p.)
0 głosów
0 odpowiedzi 210 wizyt
pytanie zadane 26 października 2019 w PHP przez Tomeksz104 Początkujący (280 p.)

93,628 zapytań

142,551 odpowiedzi

323,050 komentarzy

63,133 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1694p. - dia-Chann
  2. 1676p. - DziarnowskiJ
  3. 1650p. - Łukasz Piwowar
  4. 1640p. - CC PL
  5. 1616p. - Maurycy W
  6. 1607p. - raydeal
  7. 1602p. - Adrian Wieprzkowicz
  8. 1588p. - Tomasz Bielak
  9. 1521p. - Michal Drewniak
  10. 1491p. - Rafał Trójniak
  11. 1471p. - rafalszastok
  12. 1444p. - robwarsz
  13. 1257p. - ssynowiec
  14. 1208p. - Mariusz Fornal
  15. 1116p. - rucin93
Szczegóły i pełne wyniki

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
...