Anfängerproblem- stringstream

  • C++

  • ruebe
  • 1436 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Anfängerproblem- stringstream

    Hallo,

    könnte mir jemand bei der Behebung des Fehlers in folgendem Programm helfen? Es ist das Beispiel aus einem Tutorial zu structures, und da ich gerade noch ganz am Anfang stehe, hab ich keine Ahnung wo der Fehler liegen könnte...
    Die Fehlermeldung lautet "invalid use of undefined type struct std:: stringstream", beim Googeln nach invalid und stringstream hab ich aber nichts gefunden, das mir weiterhelfen könnte.

    C-Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. using namespace std;
    4. #define NMOVIES 3
    5. struct movies_t
    6. {
    7. string title;
    8. int year;
    9. } films[NMOVIES];
    10. int main(int argc, char *argv[])
    11. {
    12. string filmyear;
    13. for (int n=0; n<NMOVIES; n++)
    14. {
    15. cout << "Enter title: ";
    16. getline (cin,films[n].title);
    17. cout << "Enter year: ";
    18. getline (cin,filmyear);
    19. stringstream(filmyear) >> films[n].year;
    20. }
    21. }
    22. system("PAUSE");
    23. return EXIT_SUCCESS;
    24. }
    Alles anzeigen


    Danke schon mal :)


    ruebe
  • wieso nicht einfach so...


    Quellcode

    1. for (int n=0; n<NMOVIES; n++)
    2. {
    3. cout << "Enter title: ";
    4. cin>>films[n].title;
    5. cout << "Enter year: ";
    6. cin>>films[n].year;
    7. }


    Den string filmyear kannst du dir dann auch sparen...
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • Vielen Dank euch Beiden, es steht leider keine Erklärung dabei zu dem Befehl stringstream...
    Der Befehl mit der Pause war in der Vorlage mit dabei, aber es funktioniert tatsächlich auch ohne.
    Damit wäre das Problem wahrscheinlich erledigt.

    LG
    ruebe
  • Das system("pause") sorgt dafür das das Fenster geöffnet bleibt, wenn du unter Windows auf die deine .exe klickst...

    Wenn du es aus VisualStudio (oder einer anderen IDE) aufrufst sorgen die meist für einen passenden Aufruf...

    Sonst könntest du ja nicht sehen was dein Programm anzeigt...

    Stringstream ist eine Konstruktor, damit erzeugst due einen Stringstream mit dem Inhalt in den Klammern, dieses anonyme Objekt wird dann gleich weiter geschickt an deine Variable...
    siehe:
    stringstream::stringstream - C++ Reference
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • Um stringstreams benutzen zu können musst du die headerfile sstream includen.

    Kleine erklärung noch zu stringstreams:
    stringstreams können zum beispiel ganz gut dazu genutzt zu werden um numerische Werte in strings zu konvertieren.

    Z.B.

    PHP-Quellcode

    1. int a=200;
    2. float b = 33.0f;
    3. std::stringstream str;
    4. str << "Int: " << a << std::endl << "Float: " << b << std::endl;
    5. std::string alsString = str.str();
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]