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

question-closed Pobieranie pojedynczej linii z pliku .txt

0 głosów
144 wizyt
pytanie zadane 11 października w C i C++ przez wikiFord Początkujący (330 p.)
zamknięte 12 października przez wikiFord

Witam,

Mam pytanie odnośnie wczytywania danych z pliku tekstowego za pomocą funkcji getline(). Załóżmy, że mam w pliku zapisane 2 wiersze i chcę, żeby dane z pierwszego trafiły do zmiennej a, a dane z drugiego wiersza - do zmiennej b. W jaki sposób mogę to rozwiązać. Podam przykład kodu:

string linia; string a, b;
    while (!plik.eof()) 
    {
        getline (plik, linia); //pobieram dane do zmiennej "linia"
   
        /* pierwszy wiersz -> string a;
           drugi wiersz -> string b; */

    }

Wiem, że dla niektórych może to być banalne, ale męczę się z tym naprawdę długo frown.

Pozdrawiam i dziękuję za odpowiedzi.

komentarz zamknięcia: Problem rozwiązany

3 odpowiedzi

0 głosów
odpowiedź 11 października przez grzybu Obywatel (1,780 p.)
wybrane 12 października przez wikiFord
 
Najlepsza

najprosciej:

getline (plik, linia);
a=linia;
getline (plik, linia);
b=linia;

ale

komentarz 11 października przez grzybu Obywatel (1,780 p.)
edycja 11 października przez grzybu

to rozwiązanie zakłada że w pliku zawsze będzie parzysta liczba linii
 

żeby nie tworzyło to błędów można by było zrobić ifa który sprawdza czy jest możliwe pobranie drugiego elementu

 getline (plik, linia);

a=linia;

if (getline (plik, linia)){  b=linia;  }

przy czym żeby wykryć czy b zostało nadpisane wato w a i b wpisać jakiś ciąg np $$$$ który oznacza ze nie mają żadnej interesującej nas wartości

 

void zapisz_dalej( string a, string b)
{
if (b=="$$$$") //zapisz tylkko a
else //zapisz a i b
}
//=======================================
string linia; string a="$$$$", b='$$$$";

    while (!plik.eof()) 
    {
a="$$$$";
b="$$$$";
        getline (plik, linia); //pobieram dane do zmiennej "linia"
       a=linia;
if( getline (plik, linia) )
{
b=linia;
}

zapisz_dalej(a,b);
    }

 

0 głosów
odpowiedź 11 października przez mibdbz Obywatel (1,080 p.)
Jeśli dobrze pamiętam to Pan Miroslaw pokazuje odczyt i zapis z pliku w 7 odcinku kursu c++. Tworząc quiz wprowadza tam instrukcje warunkową switch, która przyporządkowuje odpowiednie linie pliku do odpowiednich zmiennych. Jeśli masz tylko dwie linie w pliku to mozna zamiast switch użyć if.
0 głosów
odpowiedź 12 października przez j23 Nałogowiec (33,820 p.)

Jak tych par jest więcej to możesz zrobić tak:

string a, b;

while (getline (plik, a) && getline (plik, b)) 
{
	...
}

 

Podobne pytania

0 głosów
2 odpowiedzi 64 wizyt
+1 głos
3 odpowiedzi 80 wizyt

42,405 zapytań

81,706 odpowiedzi

162,161 komentarzy

20,354 pasjonatów

Przeglądających: 259
Pasjonatów: 12 Gości: 247

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...