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

Wczytywanie do pliku C++ - problem

Object Storage Arubacloud
0 głosów
167 wizyt
pytanie zadane 24 marca 2017 w C i C++ przez niezalogowany

Witam, mam mały program, który ma zapisywać do pliku tekst, ale też ze spacjami. Więc użyłem getline. Po wykonaniu programu wpisuje i klikam enter to automatycznie nowa linia, ale plik jest pusty wciąż. Kod:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	string kod;
	fstream plik("zz.txt", ios::out);
	while(getline(cin, kod))
	{
		plik<<kod;
	}
	return 0;
}

Pozdrawiam i z góry dziękuję za pomoc.

2 odpowiedzi

0 głosów
odpowiedź 24 marca 2017 przez mokrowski Mędrzec (155,460 p.)
wybrane 24 marca 2017
 
Najlepsza

W systemach GNU/Linux ten program możesz zakończyć z użyciem <CTRL + d> a w systemach MS Windows <CTRL + z>. To wysyła znak końca pliku i pozwala zakończyć program.

EDIT: Jeśli chcesz koniecznie aby dane były w pliku już w trakcie wprowadzania, zmuszaj bufory strumienia do synchronizacji.

#include <iostream>
#include <fstream>
 
using namespace std;

int main()
{
    string kod;
    fstream plik("zz.txt", ios::out);
    while(getline(cin, kod))
    {
        plik << kod;
        plik << std::endl; // Bo w tekście wprowadzanym także masz..
        plik << flush; // Opróżnienie buforów 
    }
    // Nie ma potrzeby. C++ sam to robi w main()
    //return 0;
}

 

komentarz 24 marca 2017 przez Sedi Stary wyjadacz (10,200 p.)

a w systemach MS Windows <CTRL + z>

Nieprawda. W systemie Windows, do przerwania służy ctr+break, który w większości systemów konsolowych został zmieniony na ctrl+c:

CTRL+BREAK is always treated as a signal, but an application can change the default CTRL+C 

Źródło:https://msdn.microsoft.com/en-us/library/ms682541(VS.85).aspx 

komentarz 24 marca 2017 przez mokrowski Mędrzec (155,460 p.)
Przeczytaj ze zrozumieniem. Nie chcę przerwać programu tylko spowodować by getline() otrzymało informację o końcu pliku czyli znak EOF :-)
komentarz 24 marca 2017 przez Sedi Stary wyjadacz (10,200 p.)
Rzeczywiście, moje przeoczenie. Komentarz powyżej zostawia, może się komuś przyda :)
0 głosów
odpowiedź 24 marca 2017 przez czaki Nowicjusz (220 p.)
Nie ma żadnego warunku który zakończył by tą pętle .
komentarz 24 marca 2017 przez niezalogowany
No ale to ma się skończyć, kiedy wyłączysz program.
komentarz 24 marca 2017 przez czaki Nowicjusz (220 p.)
No ale jak chcesz niby to zrobić jak nie zakończysz pętli a zamkniesz program no to ci nic nie zapisze jak z resztą widać .

Podobne pytania

0 głosów
2 odpowiedzi 1,207 wizyt
+1 głos
1 odpowiedź 1,288 wizyt
0 głosów
2 odpowiedzi 200 wizyt
pytanie zadane 1 września 2017 w C i C++ przez wojtekd09 Początkujący (260 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 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!

...