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

[C++] Pobieranie liczb z pliku.txt i zapis do tablicy

0 głosów
6,784 wizyt
pytanie zadane 15 lutego 2017 w C i C++ przez sebwes97 Nowicjusz (190 p.)
Witam, rozwiązując zadanka z matury z informatyki natrafiłem na pewien problem. Mianowicie, muszę pobrać liczby z pliku i zapisać je do tablicy. Potrafię pobrać je jako ciąg znaków, ale już nie jako liczby całkowite.

Są one zapisane w pliku w taki sposób:

145 370
116 330
389 191
12 344

Jak to zrobić, by każda liczba była oddzielnie zapisana w tabeli? Proszę was o pomoc :>

5 odpowiedzi

+1 głos
odpowiedź 15 lutego 2017 przez Evelek Nałogowiec (28,960 p.)
wybrane 21 lutego 2017 przez sebwes97
 
Najlepsza

Zadanie nr. 1 z tamtego roku z matury z informatyki? Można je wykonać było w Excelu jak coś.

Jak chcesz wczytywać słowo po słowie to zrób np. tak:

int main()
{
   fstream plik;
   string wyraz1, wyraz2;

   plik.open("dane.txt", ios::in | ios::out);

   while (!(plik.eof()))
   {
      plik >> wyraz1 >> wyraz2;
      cout << wyraz1 << endl;
      cout << wyraz2 << endl;
   }
   plik.close(); 
   return 0;
}

Możesz go sobie dowolnie zmodyfikować teraz, aby wczytywane dane były wpisywane np. do vectora albo tablicy.

0 głosów
odpowiedź 15 lutego 2017 przez Dexterim Dyskutant (8,370 p.)

Możesz skorzystać z funkcji stoi. Najpierw wrzucasz sobie zmienna  do stringa potem za pomoca funkcji stoi wkładasz do tablicy np.:

std::string temp;
plik >> temp;
tablica[0] = std::stoi(temp);

 

1
komentarz 21 lutego 2017 przez sko Użytkownik (500 p.)
konwersja jest nie potrzebna ponieważ operator >> jest operatorem formatującym także można od razu wczytać do zmiennej int
0 głosów
odpowiedź 15 lutego 2017 przez niezalogowany

Nie musisz się bawić w żadne konwersje, po prostu wczytujesz liczbę z pliku do zmiennej, a zmienną za każdym wczytaniem dodajesz do vectora.

int liczba = 0;
std::vector<int>tab;
std::ifstream plik("plik.txt");

while(!plik.eof())
{
	plik >>  liczba;
	tab.push_back(liczba);
}
0 głosów
odpowiedź 15 lutego 2017 przez mokrowski Mędrzec (158,940 p.)
#include <vector>
#include <iterator>
#include <algorithm>
#include <fstream>

int main() {
    std::vector<int> dane;
    std::ifstream plik("dane.txt");
    // Tu można sprawdzić czy prawidłowo otwarty
    copy(std::istream_iterator<int>(plik), std::istream_iterator<int>(), std::back_inserter(dane));
    // Tu można sprawdzić czy wczytane są dane... 
}

 

0 głosów
odpowiedź 21 lutego 2017 przez sebwes97 Nowicjusz (190 p.)

Sorry, że tak późno piszę, ale padłem ofiarą lenistwa :) Wszystko ładnie działa. Mój błąd polegał na tym, że chciałem to zrobić za pomocą getline(). Wszyscy mi bardzo pomogliście, dzięki wink

Podobne pytania

0 głosów
1 odpowiedź 2,399 wizyt
pytanie zadane 26 listopada 2017 w C i C++ przez Karol.99 Użytkownik (550 p.)
0 głosów
1 odpowiedź 1,324 wizyt
pytanie zadane 24 sierpnia 2017 w C i C++ przez Vendari Nowicjusz (150 p.)
0 głosów
1 odpowiedź 2,089 wizyt

93,630 zapytań

142,551 odpowiedzi

323,054 komentarzy

63,134 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2153p. - DziarnowskiJ
  3. 2123p. - Łukasz Piwowar
  4. 2077p. - raydeal
  5. 1989p. - CC PL
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1895p. - rucin93
  9. 1855p. - Michal Drewniak
  10. 1777p. - robwarsz
  11. 1701p. - rafalszastok
  12. 1588p. - Tomasz Bielak
  13. 1491p. - Rafał Trójniak
  14. 1377p. - ssynowiec
  15. 1208p. - Mariusz Fornal
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
...