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

Wczytywanie i odczytywanie danych z tego samego pliku

Object Storage Arubacloud
0 głosów
200 wizyt
pytanie zadane 1 września 2017 w C i C++ przez wojtekd09 Początkujący (260 p.)

Witam,

Mam dziwny problem z plikami w C++. W jednej klasie chcę zapisać jakieś dane do pliku tak jak poniżej

int a = 3;
	
fstream zapis; 
zapis.open("C:\\Spatial\\dane.txt");
zapis << a << endl;
zapis.close();

a w drugiej (w funkcji wywoływanej poprzez kliknięcie pozycji w menu) chcę je odczytać i zapisać

    CString cs;
	
	string linia;
	fstream plik;
	
	plik.open("C:\\Spatial\\dane.txt");
	if (plik.good() == true)
	{
		while (!plik.eof())

		{
			getline(plik, linia);
			cs = linia.c_str();
			if(linia=="")
			SetDlgItemTextW(IDC_EDIT4, _T("tekst"));
			else 
			SetDlgItemTextW(IDC_EDIT4, cs);
			
		}
	
	}

Plik mi się tworzy we wskazanym miejscu wraz z zawartością, ale gdy próbuje go odczytać w podany sposób, to mam pusty string tak jakby nic w pliku nie było. Gdy jednak stworzę sobie ręcznie na dysku plik txt, to wtedy z niego mogę zapisane dane odczytać.

Co może być przyczyną tego problemu?

2 odpowiedzi

0 głosów
odpowiedź 1 września 2017 przez seba Dyskutant (8,900 p.)
ios::in || ios:out || ios::app poczytaj
komentarz 1 września 2017 przez wojtekd09 Początkujący (260 p.)
Używałem tych opcji, ale nic to nie dało (być może źle to robię). Dziwne jest też to, że jeśli wskazany kod umieściłem jeden pod drugim bez podziału na klasy w całkiem nowym programie, to on zadziałał tak jak powinien.
komentarz 2 września 2017 przez niezalogowany
edycja 2 września 2017

Mogłoby działać jeżeli miałeś utworzony plik docelowy. Domyślnie metoda fstream::open jest wywoływana z parametrem out|in. Więc jeżeli teraz nie masz utworzonego pliku dane.txt to nie jest możliwe jego utworzenie i dalsza praca na nim (w przeciwieństwie do samego std::ios::out - patrz tabelka - link). Czy po uwzględnieniu odpowiedniego dostępu problem znika?

komentarz 2 września 2017 przez wojtekd09 Początkujący (260 p.)
Niestety problem wciąż istnieje.
komentarz 2 września 2017 przez niezalogowany
Podaj więcej szczegółów.
0 głosów
odpowiedź 3 września 2017 przez j23 Mędrzec (194,920 p.)
edycja 3 września 2017 przez j23

Dlaczego nie użyjesz strumieni ifstream i ofstream odpowiednio do czytania i zapisywania? fstream używaj tylko wtedy, gdy musisz na jednym strumieniu dokonywać operacji we/wy.

 

Pętlę zmień na:

while (getline(plik, linia))
{
      ...
}

Podobne pytania

+1 głos
1 odpowiedź 3,191 wizyt
0 głosów
2 odpowiedzi 1,207 wizyt
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 13 lutego 2020 w C i C++ przez Damianek Obywatel (1,020 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

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

...