Einlesen in bestimmter Form

  • Einlesen in bestimmter Form

    Hallo zusammen.

    Ich sitzte gerade irgendwie auf dem Schlauch und bräuchte eure Hilfe.
    Folgende Aufgabenstellung:

    Ich soll in ein int-arry eine Zeichenfolge in folgender Form einlesen:
    <3,4,2,6>

    Auf deutsch:
    - Beginnend mit dem Zeichen "<"
    - Zahlen getrennt mit ","
    - Ende durch Zeichen ">"
    - Leerzeichen sollen ignoriert werden

    Hoffe ihr könnt mir weiterhelfen mit dem ein oder anderen Gedanken- und Quellcodeanstoss ;)
    ~ rock on ~
  • hm warscheinlich am einfachsten ließt du zuerst einen char ein, testest auf '<' dann in einer schleife immer >>>int - char<<< biss char ein '>' ist

    Quellcode

    1. #include <iostream>
    2. #include <vector>
    3. int main()
    4. {
    5. char the_char;
    6. int value;
    7. std::vector<int> vector;
    8. std::cin >> the_char;
    9. if (the_char != '<') return
    10. std::cin >> the_char;
    11. while (the_char != '>')
    12. {
    13. }
    14. }
    Alles anzeigen
    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 ;)
  • wenns 4 sind würde das gehen, nur

    1) format-strings sind eher gefährlich (in diesem Fall nicht)
    2)

    Quellcode

    1. int var[4];
    2. scanf("<%d,%d,%d,%d>", var, var + 1, var + 2, var + 3);
    ist die Array-version
    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 ;)
  • Mein Lösung wäre:

    Quellcode

    1. #include <iostream>
    2. #include <vector>
    3. int main()
    4. {
    5. char the_char;
    6. int value;
    7. std::vector<int> myvector;
    8. std::cin >> the_char;
    9. if (the_char != '<') return
    10. std::cin >> the_char;
    11. while (the_char == ',')
    12. {
    13. std::cin >> value;
    14. std::cin >> the_char;
    15. myvector.push_back(value);
    16. }
    17. }
    Alles anzeigen


    gegebenenfalls Fehler behandlung, den vaector gegen einen geeigneteren Container tauschen, etc.

    Musste schnell weg ;)
    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 ;)
  • Dankeschön. Soweit funktioniert alles :)

    Jetzt hab ich aber noch ein kleines Problem:
    Wie kann ich den cin auf sein Failbit stellen?
    Ich dachte eigentlich das geht so:

    Quellcode

    1. std::cin.fail();

    will aber irgendwie nicht so ganz.

    Könnt ihr mir sagen, wie ich die verschiedenen Bits für das cin per Hand setzen kann?

    Danke
    ~ rock on ~