Editierbare Ausgabe



  • hi,
    kaum angemeldet will ich gleich mal los fragen.
    und zwar würde ich gerne was ausgeben was editierbar ist und mit enter wie gewohnt an cin übergeben wird. quasi

    std::string test;
    "ich bin editierbar"" >> std::cin >> test;
    

    bin nach tagelanger suche echt verzweifelt. das kann doch kein problem sein was selten anzutreffen ist.

    bin für jede hilfe dankbar 🙂

    gruß postal

    edit: ok also es soll in der konsole (hier bash) ein text ausgegeben werden (wie es z.b. cout macht) der aber änderbar ist, nicht wie im normalfall einfach da steht und mit backspace. wenn ich bei cin was eingebe kann ich es ja auch wieder löschen und buchstabendreher z.b. vertauschen.

    #include <iostream>
    
    int main() {
    	std::string editable;
    	std::cout << "ich will editierbar sein" << std::endl;
    	std::cin >> editable;
    }
    

    mein wunschablauf ist:
    ./a.out (also starten)
    "ich will editierbar sein" wird angezeigt
    haue ich nun auf die tasten (sagen wir ich drücke 5 mal backspace,2 mal k und anschließen enter) sollte da stehen:
    "ich will editierbarkk"

    nun sollte in editable "ich will editierbarkk" stehen.
    da "ich will editierbar sein" aber statisch ist kann man das so nicht realisieren. ich hoffe die erklärung ist besser 🙂



  • Ich bin nicht ganz sicher, was du willst, aber da könntest du ja eine normale Abfrage rein tun.

    if ( editierbar )
     std::cin >> test;
    ...
    

    Wenn es nicht das ist, musst du ein wenig besser erklären, was du willst.



  • das wird so einfach nicht möglich sein...

    Wenn ich das richtig verstehe, willst du dem User einen Standardeintrag bieten, den er mit Enter bestätigen oder vorher noch abändern kann, sofern er das will...

    In der Regel wird das so gelöst:

    std::string test;
    std::cout << "Gib was ein (Standardeingabe):";
    std::cin >> test;
    
    if ( test.isEmpty() )
    {
        test = "Standardeingabe";
    }
    


  • zwutz schrieb:

    test.isEmpty()
    
    }
    

    wxStrings? 😉

    so würde ich es wirklich nur sehr sehr ungerne lösen aber da hab ich noch gar nicht dran gedacht. werde ich mir auf jedenfall im hinterkopf behalten wenn niemand einen anderen weg findet. danke für den tipp.



  • postal schrieb:

    zwutz schrieb:

    test.isEmpty()
    
    }
    

    wxStrings? 😉

    ach stimmt... beim Standard-String heißt das nur .empty()

    kommt davon, wenn man die Nomenklatur eines Frameworks gewohnt ist (nein, nicht wxWidget) ^^


Anmelden zum Antworten