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

[C++] Co znajduje się w zmiennej, do której odczytano plik?

Ostatnio zmodyfikowano 2013-06-02 18:55
Autor Wiadomość
Pawel9218
Temat założony przez niniejszego użytkownika
[C++] Co znajduje się w zmiennej, do której odczytano plik?
» 2013-06-01 20:25:04
C/C++
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<string>

using namespace std;

int main()
{
    ifstream plik;
    plik.open( "wczytaj.txt" );
    string tekst;
    while( !plik.eof() )
    {
        plik >> tekst;
        //  cout<<tekst;                   //jak w tym momencie daje wypisanie na ekran z pliku to wyswietla sie cały tekst co był w
        //pliku ,czyli prawidłowo
    }
    cout << tekst; //jak dam tutaj wyświetlenie to tylko ostatnią linijke wyświetla i wgl nie rozumiem dlaczego
    //tylko w petli mi wyswietla ,a poza nia juz nie caly plik.
    system( "pause" );
    return 0;
}
P-84574
pekfos
» 2013-06-01 20:28:43
Ponieważ nie wczytujesz naraz całego pliku. Po pętli w zmiennej pozostaje to, co zostało wczytane jako ostatnie.
P-84575
Pawel9218
Temat założony przez niniejszego użytkownika
» 2013-06-01 20:34:13
Ok ,nie ma sposobu żeby bez jakiś dodatkowych rzeczy wczytać odrazu do stringa całego pliku ? Tzn. chodzi mi o to ,żeby 1 poleceniem wczytać cały plik do stringa.
Tutaj niby mam "plik.eof()" to myślałem że wczytuje do końca pliku (end of file).
P-84576
Monika90
» 2013-06-01 20:49:15
Cały plik do stringa? Może tak...
C/C++
std::string s(( std::istreambuf_iterator < char >( file ) ), std::istreambuf_iterator < char >() );
P-84578
pekfos
» 2013-06-01 20:50:18
Jest sposób:
C/C++
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;

int main()
{
    ifstream ifs( "lol.txt" );
    ostringstream oss;
   
    oss << ifs.rdbuf(); //wczytanie całego pliku do oss
    cout << oss.str(); //wypisanie
}

Cały plik do stringa? Może tak...
C/C++
std::string s( std::istreambuf_iterator < char >( file ), std::istreambuf_iterator < char >() );
A nie powinno być przypadkiem
std::istreambuf_iterator < char >( file.rdbuf() )
?
P-84579
Pawel9218
Temat założony przez niniejszego użytkownika
» 2013-06-01 21:02:12
Ok ,dzięki wielkie.
P-84582
Monika90
» 2013-06-01 21:05:03
@pekfos, teraz jest dobrze. Z początku brakowało dodatkowych nawiasów.
P-84583
pekfos
» 2013-06-01 21:18:57
Można też bez nich
C/C++
std::string s { std::istreambuf_iterator < char >( file ), std::istreambuf_iterator < char >() };
P-84586
« 1 » 2
  Strona 1 z 2 Następna strona