Stream Eingabe ganze Zeile

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

  • Stream Eingabe ganze Zeile

    Ich würde gerne die >>gesammte<< Eingabe vom Stream std::cin in einen std::string lesen.

    std::cin.get() funktioniert nur mit Chars, std::cin >> liefert mir nur das erste Wort.
    CoderSuche hat nicht weitergeholfen, kennt jamnd eine elegante Möglichkeit das zu erreichen?
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)
  • Ich habs jetzt erstmal mit fgets() gelöst:

    Quellcode

    1. std::string getLINE()
    2. {
    3. char Buffer[255];
    4. std::string tmp, result;
    5. std::cin.sync();
    6. fgets(Buffer, 255, stdin);
    7. tmp = Buffer;
    8. result = tmp.substr(0, tmp.length()-1);
    9. std::cout << result;
    10. return result;
    11. }
    Alles anzeigen


    Allerdings habe ich ein Problem:
    Ich hab für das ganze eine Schleife gebastelt, die überprüfen soll ob die eingabe != "" ist.
    Das ganze funktioniert auch - aber erst beim 2. Durchlauf der Schleife.
    Beim ersten Aufruf der Funktion komme ich gar nicht dazu eine Eingabe zu machen, die funktion gibt sofort "" zurück.

    Ich habe versucht das Problem einzugrenzen, aber isoliert funktioniert das ganze wunderbar.

    Jemand eine Ahnung was schief gehen kann?
    Ich kann wohl nicht den ganzen Code posten, aber wenn ihr weitere Infos braucht poste ich die entsprechende Stelle ;)

    Der Code der die Funktion aufruft:

    Quellcode

    1. std::string name;
    2. read();
    3. std::map<std::string, Data>::iterator it;
    4. std::cout << "Name?\n";
    5. //gets(Buffer);
    6. name = getLINE();
    7. std::cout << ">>" << name << "<<" << endl;
    8. it = m_Map1.find(name);
    9. while ((it = m_Map1.find(name)) == m_Map1.end())
    10. {
    11. std::cout << "Du hast >>" << name << "<< eingegeben!\n";
    12. std::cout << "Name in der Datenbank nicht gefunden!\nBitte Achte auch auf Großschreibung!\nNeuer Versuch ;)\n";
    13. //gets(Buffer);
    14. name = getLINE();//Buffer;
    15. std::cout << ">>" << name << "<<" << endl;
    16. }
    17. write()
    Alles anzeigen


    //Edit: Compiler g++ 4.1.2 / Ubuntu 6.10
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)