Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Dateien ein - und auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
04.01.2007, 15:17 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)



C++:
std::string line;
std::list<std::string> liste;
while(!in.eof())
{
    std::getline(line, in);
    liste.push_back(line);
}
std::cout << liste.at(9) << " - das ist Zeile 9" << std::endl;

Nicht getestet, sollte aber so tun. Am Anfang noch #include <list> einfügen
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
04.01.2007, 15:31 Uhr
~Suba Esel
Gast


std::getline(line,in);
muss werden: std::getline(in,line);
erst von wo, dann nach wo

er kennt das liste.at(9) nicht (also das .at)
fehler: class std::list has no member named at
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
04.01.2007, 15:32 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


stimmt, nimm liste[8]. Habs mitm std::vector verwechselt
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
04.01.2007, 15:48 Uhr
~Suba Esel
Gast


Das war ja mal ne schnelle Antwort javascript:insert_smiley('')

Funktioniert aber leider immer noch nicht. Mein Code:


C++:
#include <fstream>
#include <iostream>
#include <list>

int main()
{
    std::ofstream out("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Test.txt");
    for (int i = 1;i < 21;++i) // schreibt die Zahlen von 1 bis 20 in die Datei, mir ist nichts Besseres eingefallen^^
    {
        out << i << std::endl;
    }
    out.close();

    std::ifstream in("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Test.txt");

    std::string line;

    std::list<std::string> liste; // was macht der Befehl eigentlich?

    while(!in.eof())
    {
        getline(in,line);
        liste.push_back(line); // und was macht der Befehl?
    }

    std::cout << liste[8] << " - das ist Zeile 9" << std::endl;
    // std::cout << liste; wieso funktioniert das nicht?
    in.close();
}




Ich hoffe jetzt einfach mal ich nerve euch nicht zu sehr

und wieso ist eigentlich so ungefähr jedes zweite mal mein Sicherheitscode falsch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
04.01.2007, 15:50 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)



C++:
getline(in,line);
das muss
C++:
std::getline(in,line);
heißen
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
04.01.2007, 16:03 Uhr
~Suba Esel
Gast


Oh, stimmt
Allerdings ist das Problem immer noch das gleiche
An der Stelle


Code:
std::cout << liste[8] << " - das ist Zeile 9" << std::endl;



kommt der Fehler "error: no match for 'operator[]' in 'liste[8]'


und ich registrier mich jetzt, das nervt mit diesen Sicherheitscodes!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
04.01.2007, 16:42 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Stimmt ... Ersetzte das std::list liste; durch std::vector und includiere <vector> und nicht <list>. Ansonten lass den Code so, dann gehts
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
04.01.2007, 16:53 Uhr
Suba Esel



O.K., jetzt funktionierts

das std:: bei dem getline(in,line) wird seltsamerweise nicht benötigt

wieso funktioniert das mit std::cout << liste nicht?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
04.01.2007, 17:14 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Weil man in einer liste etwas hineinschiebt und es dann wieder herausholt. Auf irgendwelche Elemente in der Mitte kann man nicht zugreifen ....
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
04.01.2007, 17:19 Uhr
Suba Esel



Und was machen diese beiden Zeilen?

std::vector<std::string> liste;

liste.push_back(line);

Erstellt die erste eine Liste, die Strings enthält?

Schreibt die zweite in die nächste Zeile von liste den Inhalt von line?
--
Simon

Dieser Post wurde am 04.01.2007 um 17:28 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: