Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

String w <fstream> zapis stringa do pliku jako jednej zmiennej włącznie ze spacjami.

Ostatnio zmodyfikowano 2013-11-28 20:30
Autor Wiadomość
Zdziwiony
Temat założony przez niniejszego użytkownika
String w <fstream> zapis stringa do pliku jako jednej zmiennej włącznie ze spacjami.
» 2013-11-28 19:03:04
Witam mam taki oto kod:
C/C++
if( plik3.good() == true )
{
    cout << "Plik zostal otwarty pomyslnie!\nJego zawartosc zostala zaladowana ponizej:\n" << std::endl;
    fstream plik3( nazwa3.c_str(), std::ios::in ); //zakładamy, że plik istnieje
    string dane;
    getline( plik3, dane );
    cout << dane;
    cout << "\n";
    cout << "\n\nCo chesz zrobic z tym plikiem?\nNadpisz - nadp\nZrezygnuj - wstecz";
    string komenda2;
    cin >> komenda2;
    if( komenda2 == "nadp" )
    {
        cout << "Wpisz tresc dopiski do pliku";
        fstream plik3( nazwa3.c_str(), std::ios::out );
        string napis;
        cin >> napis;
        plik3.write( & napis[ 0 ], napis.length() );
        plik3.close();
    }
    else if( komenda2 == "wstecz" )
    {
        plik3.close();
    }
    else cout << "error";
   
} else std::cout << "Wystapil blad! Nie mozna otworzyc pliku!" << std::endl;

}

Program ten w założeniu ma nadpisywać plik .txt, jednakże jeśli wprowadzę mu taki tekst np. "to jest przykład" to program zapisze do pliku tylko wyraz "to" bo po spacji tekst jest traktowany jak osobna zmienna i nie jest załadowywana do pliku... Wpadłem na pomysł, zeby zrobić coś takiego:
cin >> napis; cin >> napis; cin >> napis;
 No i bingo! mogę wpisać 3 wyrazy, ale... muszę wpisać 3 bo program nie wróci do MANU... więc tu moje pytanie czy można to jakoś zapisać, a jeśli tak to jak, żeby string był brany pod uwagę jako CAŁOŚĆ tekstu tj. np. "Ala ma kota" i żeby ten tekst był brany przez program jako JEDEN string.

Pozdrawiam i proszę o pomoc :)
P-97769
SeaMonster131
» 2013-11-28 19:05:25
Użyj getline().
P-97771
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-28 19:16:27
Taki zapis:
C/C++
if( komenda2 == "nadp" )
{
    cout << "Wpisz tresc dopiski do pliku";
    fstream plik3( nazwa3.c_str(), std::ios::out );
    string napis;
    cin >> napis;
    getline( cin, napis );
    plik3.write( & napis[ 0 ], napis.length() );
    plik3.close();
}
else if( komenda2 == "wstecz" )
{
    plik3.close();
}
else cout << "error";
pobiera tekst z konsoli, ale go nie zapisuje do pliku ;/

A taki zapis:
C/C++
if( komenda2 == "nadp" )
{
    cout << "Wpisz tresc dopiski do pliku";
    fstream plik3( nazwa3.c_str(), std::ios::out );
    string napis;
    getline( cin, napis );
    plik3.write( & napis[ 0 ], napis.length() );
    plik3.close();
}
else if( komenda2 == "wstecz" )
{
    plik3.close();
}
else cout << "error";

Nie pobiera od użytkownika tekstu ;/ Czemu to i to nie działa ?
P-97776
pekfos
» 2013-11-28 19:20:22
Po co ciągle otwierasz plik?
P-97778
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-28 19:25:26
Chcesz powiedzieć, że zamiast tego:
fstream plik3( nazwa3.c_str(), std::ios::out );
 mam dać coś takiego ?
fstream plik3;
 ?

EDIT:
Taka zmiana skutkuje nie nadpisaniem pliku więc to raczej nie to... A więc co ?
P-97779
pekfos
» 2013-11-28 19:30:29
Niepotrzebnie w prawie każdym bloku tworzysz nowe plik3.
P-97781
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2013-11-28 19:37:02
Chyba jednak potrzebnie :) Bo jak użyje go tylko raz na początku to program się owszem komplikuje, ale nadpisuje ten plik TYLKO raz, żeby móc nadpisać plik drugi raz (po powrocie do menu) muszę zresetować apkę, a tego nie chcę.
A wracając do tematu, to jak to zapisać, żeby pobrać od użytkownika tekst i zapisać go do pliku ? Bo moja metoda niestety uwzględnia tylko jeden wyraz :)
P-97784
pekfos
» 2013-11-28 19:59:02
Chyba jednak potrzebnie :) Bo jak użyje go tylko raz na początku to program się owszem komplikuje, ale nadpisuje ten plik TYLKO raz, żeby móc nadpisać plik drugi raz (po powrocie do menu) muszę zresetować apkę, a tego nie chcę.
Kod się "komplikuje" przez te dodatkowe pliki. Między operacjami wejścia i wyjścia (i odwrotnie) trzeba ustawiać odpowiednie pozycje w pliku. Najprawdopodobniej to jest tu problemem. Ale wracając do tematu..

Nie pobiera od użytkownika tekstu ;/
"U mnie działa". Podaj więcej kodu. Najlepiej coś, co można skompilować i przetestować.
P-97787
« 1 » 2
  Strona 1 z 2 Następna strona