z tym aspektem dopiero zaczynam, a jest mi potrzebne, bo nie mam ochoty wpisywać wielkich ciągów liczb z palca do programu, a uważam za wygodne je wczytać i dopiero później na nich operować, więc na początek chce się nauczyć, jak przenieść to co mam w pliku do wektora (wektor z uwagi na dowolną długość ciągu liczb)
kod programu
#include
#include
#include
using namespace std;
int main ()
{
cout<<"Wczytam dane z pliku i wpiszę je do tablicy, a na potwierdzenia wypiszę tablicę"
"!będzie to tutaj jednak wektor!"<
vectorwektor;
fstream plik;
plik.open("plik.txt", fstream::out); //otwieram plik i umożliwiam sobie z niego odczyt
if(plik.is_open())
{
cout <<"\nPlik otwarto poprawnie"<
}
while(plik.good())
{
wektor.push_back((char) plik.get());
}
//wypisanie wektora
while(!wektor.empty())
{
cout<
wektor.pop_back();
}
return 0;
}
powiedzmy, że w plik.txt mam ciąg liczb 1…10 i teraz co się dzieje przy komplikacji nie ma problemów, ale za każdym razem program zwraca -1, nie ważne co jest w pliku + tracę dane zapisane w pliku czemu tak się dzieje nie wiem, bo nie daję w tym kawałku
plik.open("plik.txt", fstream::out);
możliwości zapisywania w pliku , jakość poradników z google mnie nie zadowala, bo wszędzie jest co innego ifstream,fstream,itd nie wiem co do czego, ale skutecznie mi tą mąci w głowie… komendy brałem z http://www.cplusplus.com
#include
#include
#include
using namespace std;
int main ()
{
cout<<"Wczytam dane z pliku i wpiszę je do tablicy, a na potwierdzenia wypiszę tablicę"
"!będzie to tutaj jednak wektor!"<
vectorwektor;
fstream plik;
plik.open("plik.txt" , fstream::in); //otwieram plik i umożliwiam sobie z niego odczyt
if(plik.is_open())
{
cout <<"\nPlik otwarto poprawnie"<
}
while(plik.good())
{
int liczba;
plik>>liczba;
wektor.push_back(liczba);
}
//wypisanie wektora
cout<<"\nRozmiar wektora = "<
while(!wektor.empty())
{
cout<
wektor.pop_back();
}
return 0;
}
ale chodzi dziwnie, nie do końca dobrze, bo wypisuje liczby
nie rozumiem, przyznam szczerze, tego kawałka… skoro plik>>liczba, robi to samo co cin>>liczba… to czemu to neguję ? wiem, chodzi dobrze, bo sprawdzałem, ale nie chciałbym wziąć tego na wiarę a zrozumieć
a jak zrobić tak, żeby program faktycznie pobierał z pliku, gdzie jest ciąg liczb 12345 pojedyncze cyfry… bo dopiero jak między liczbami dałem spację, w wektorze miałem
1 | 2 | 3 | 4 | 5
jeśli spacji nie było,to do wektora było wczytywane
12345 | 12345
. Czym jest to spowodowane i jak można sobie z tym poradzić, żebym nie musiał się na następny raz martwić robieniem ręcznie spacji w pliku tekstowym.
pierwotnie w pliku miała być 1000-cyfrowa liczba, ale właśnie do wektora wczytywały się dwie takie liczby i nie miałem jak operować na poszczególnych jej cyfrach, no to między każdą cyfrę dałem spację i mogłem prawidłowo, znaczy zgodnie z potrzebą wczytać sobie poszczególne cyfry…
z tego co napisałeś, wnioskuję, że
126 76 123
zostałoby wczytane do wektora
wektor-> 126 76 123
, ale już
12676123
zostanie wczytane do wektora jako
wektor->12676123
czyli nie da rady obejść tego tak, żebym ciąg 12676123 wczytał “pojedynczo po cyfrze” do wektora ?