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

Odczyt zawartości katalogu (C++)

Object Storage Arubacloud
0 głosów
540 wizyt
pytanie zadane 25 października 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
edycja 25 października 2018 przez Sic

Witam chciałem napisać krótki program który będzie wyświetlał dane (system("dir")). Następnie wszystko co zostanie znalezione wpisał do pliku tekstowego dla ćwiczenia obsługi plików.

Oto kod:

#include <fstream> 
#include <iostream>
#include <cstdlib>

int main()
{
	std::fstream plik; //obiekt pliku
	// otwieranie pliku
	plik.open("plik.txt", std::ios::in | std::ios::out | std::ios::app);
	if (plik.good() == true)
	{
		plik << system("dir");
		plik.close();
	}
	system("pause");
	return 0;
}

Problem polega na tym że do pliku "plik.txt" nic się nie zapisuje w dodatku tworzy się plik "plik", w który zostaje zapisane 0 co przypuszczam oznacza błąd if.

W jaki sposób mogę sprawić, aby wywołanie "system("dir")" zostało zapisane w pliku "plik.txt" ?

komentarz 25 października 2018 przez RafalS VIP (122,820 p.)
A gdzie pytanie :D?
komentarz 25 października 2018 przez Sic Dyskutant (8,510 p.)

Wybacz, zapomniałem blush z góry proszę tylko o podpowiedź.

1 odpowiedź

+1 głos
odpowiedź 25 października 2018 przez RafalS VIP (122,820 p.)
wybrane 27 października 2018 przez Sic
 
Najlepsza

Nie spytałes o nic wiec jedynie zasugeruje, ze takie rzeczy robi sie biblioteka filesystem:

https://en.cppreference.com/w/cpp/filesystem/directory_iterator

Jesli nie uzywasz C++17 to musisz skorzystać z wersji boost'a:

https://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/tutorial.html

A Twoj kod nie dziala bo system nie zwraca stringa będącego wynikiem operaxji tylko return code komendy - 0 gdy sie udala niezerowa wartos gdy nie.

No i linuksowe shelle nie znaja komendy dir :p korzystając z system ograniczasz sie do windowsa.

Edit: jeśli koniecznie chcesz uzyc system to:

system("dir > plik.txt")

 

komentarz 25 października 2018 przez Sic Dyskutant (8,510 p.)

no tak tą części rozumiem, miałem przez to błąd, jednak mi chodzi o tą część:

c:\\
komentarz 25 października 2018 przez j23 Mędrzec (194,920 p.)
No i?
komentarz 26 października 2018 przez Sic Dyskutant (8,510 p.)
dlaczego bez tego dodatkowego tutaj backslasha nie działa kod ?
1
komentarz 26 października 2018 przez RafalS VIP (122,820 p.)

bo \ w stringu ma specjalne znaczenie. Pewnie kojarzysz \n - przejscie do nowej lini. Wyobraź sobie, że Twój plik zaczynałby się na n:

c:\nowy

jesli wrzucisz to w stringa z pojedynczym backslashem to dostaniesz:

c:
owy

podobnie inne literki mają specjalne znaczenie gdy pojawią się po backslashu, dlatego trzeba wyłaczyć tą specjalną moc backslasha, żeby był traktowany dosłownie i nie psuł znaczenie literki za nim.

c:\\nowy

 

komentarz 27 października 2018 przez Sic Dyskutant (8,510 p.)
Dziękuję bardzo własnie o to mi chodziło.

Podobne pytania

0 głosów
1 odpowiedź 815 wizyt
pytanie zadane 25 czerwca 2019 w C i C++ przez kenjiro244 Dyskutant (8,600 p.)
0 głosów
0 odpowiedzi 301 wizyt
0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 23 października 2020 w C i C++ przez Colossus Mądrala (6,410 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

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

...