zapis danych do pliku w tablicy

0

Istnieje możliwość zapisu danych do tablicy?
Próbuję coś, ale mi nie wychodzi.

Ps. Proszę odpowiadać mi jak idiocie ;D

#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;

string produkt[99];
int main()
{


    fstream dane;
    dane.open("dane.txt", ios::app);
    if(dane)    {cout << "dziala"<<endl<<endl;}
    else        {cout << "nie dziala"<<endl<<endl;}

    cout << "Podaj produkt: ";
    cin >> produkt[0];
    cin >> produkt[1];
    dane.write(&produkt[99], produkt.length());
    dane.close();
0

Co Twoim zdaniem powinna zrobić ta linijka ?

dane.write(&produkt[99], produkt.length());
0

Nie używaj zmiennych globalnych. Napisz co chcesz zrobić, bo z kodu nie idzie tego wywnioskować. Chcesz wczytać słowa z pliku do tablicy produkt?

0
  1. Nie zamknięta funkcja main().
  2. Odwołujesz się do 100 elementu tablicy 99 elementowej.
  3. fstream::write przyjmuje jako argument const char * a przekazujesz std::string*.
  4. Tablice w C++ nie mają żadnych metod, więc produkt.length() jest niepoprawne.
0

Było oryginalnie (skąd to wytrzasnąłem) : dane.write(&produkt[0], produkt.length());

Tak kombinowałem po prostu już w każdą stronę... : /

@kq
tak, zapisywać różne dane tekstowe i potem wyciągania jak z tablicy.

@hauleth

  1. Jest zamknięta { }. Po prostu jakoś nie wczytało końcówki
  2. Nie rozumiem :(
  3. Rozumiem
  4. Pół na pół
0
#include <iterator>
#include <iostram>
#include <fstream>
#include <algorithm>
#include <string>

int main()
{
    std::string arr[99];
    std::ifstream f("data.txt");
    std::copy_n(std::istream_iterator<std::string>(f), 99, std::begin(arr));
}

pisane z palca, ale powinno być ok

0

@kq:

Nie trzeba otwierać i zamykać pliku?

0

Trzeba. Ale nie trzeba się silić aby robić to jawnie. Inna sprawa to obsługa błędów - tego u mnie nie ma, ale to też proste.

0

@kq:

Wyszły mi errory (coś źle robię) (jestem bardzo początkujący w C++).

error: 'copy_n' is not a member of 'std'
error: 'begin' is not a member of 'std'

{

fstream dane;
dane.open("dane.txt", ios::app);
if(dane)    {cout << "dziala"<<endl<<endl;}
else        {cout << "nie dziala"<<endl<<endl;}

std::string arr[99];
std::ifstream f("dane.txt");
std::copy_n(std::istream_iterator<std::string>(f), 99, std::begin(arr));

cout << "wpisz produkt";
cin >> produkt[0];

dane.close();


return 0;

}

0
#include <iterator>
#include <iostram>
#include <fstream>
#include <algorithm>
#include <string>

tak się składa, że napisałem to nawet wyżej.

0

Dodałem te "includy", po prostu nie chciałem zaśmiecać.

#include <iostream>
#include <iterator>
#include <fstream>
#include <algorithm>
#include <string>

using namespace std;

string produkt[99];
int main()
{


    fstream dane;
    dane.open("dane.txt", ios::app);
    if(dane)    {cout << "dziala"<<endl<<endl;}
    else        {cout << "nie dziala"<<endl<<endl;}

    std::string arr[99];
    std::ifstream f("dane.txt");
    std::copy_n(std::istream_iterator<std::string>(f), 99, std::begin(arr));

    cout << "wpisz produkt";
    cin >> produkt[0];

    dane.close();


    return 0;
}
0

U mnie działa: https://wandbox.org/permlink/XeP22jbTlf9ItxME

Używasz jakiegoś antycznego kompilatora albo opcji kompilacji w wersji z poprzedniego tysiąclecia? I dlaczego zamieniłeś jedną linikę:

std::ifstream f("dane.txt");

na trzy?

    fstream dane;
    dane.open("dane.txt", ios::app);
    dane.close();
0

Używam Code::Blocks 17.12

zmieniłem tylko z ścieżkę - dane.txt. Musi być - data.txt . ?

0

Nie, chodzi mi o to, że dodałeś jawne wywołania open/close - po co? Poza tym, jak tylko wczytujesz to ifstream, jak tylko zapisujesz to ofstream.

https://stackoverflow.com/questions/18174988/how-can-i-add-c11-support-to-codeblocks-compiler Ustaw najnowszy standard jaki możesz (17 > 14 > 11)

0

Zrobiłem to co było napisane na tym forum i już nie erroruje.
Włącza się wszystko ładnie, kończy program również, ale w pliku " dane.txt " nic się nie dodało.

Chociaż, nie w ERRORze, ale pisze:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
||=== Build finished: 0 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

#include <iostream>
#include <iterator>
#include <fstream>
#include <algorithm>
#include <string>

using namespace std;

string produkt[99];
int main()
{
ofstream dane;
std::string arr[99];
std::ifstream f("dane.txt");
std::copy_n(std::istream_iteratorstd::string(f), 99, std::begin(arr));

cout << "wpisz produkt";
cin >> produkt[0];
cin >> produkt[1];
cin >> produkt[2];
return 0;

}

0
kq napisał(a):

Chcesz wczytać słowa z pliku do tablicy produkt?

iwanttoknowit napisał(a):

@kq
tak

iwanttoknowit napisał(a):

w pliku " dane.txt " nic się nie dodało.

??? Zdecyduj się co chcesz zrobić. Wczytywanie z pliku nie modyfikuje pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1