std::cin manipulieren?



  • eingabe schrieb:

    Aktuell frage ich so die eingabe ab

    std::getline(std::cin, std::string);
    

    wie kann ich da die Ausgabe beeinflussen?

    Bei der Eingabe kannst Du die Ausgabe garnicht beeinflussen.



  • genau, und deswegen verstehe ich ja KN4CK3Rs Beitrag nicht



  • eingabe schrieb:

    genau, und deswegen verstehe ich ja KN4CK3Rs Beitrag nicht

    Der Beitrag soll dir sagen, dass du nicht versuchen sollst, die Ausgabe nicht bei der Eingabe zu beeinflussen, sondern bei (oder kurz vor) der Ausgabe. Du willst von dem, was eingegeben wurde, nur die ersten 6 Zeichen wieder ausgebene, oder? Dann nimm den String, der eingegeben wurde, und gib die ersten 6 Zeichen wieder aus.
    In keinem Fall musst du aber std::cin "manipulieren".



  • Ich glaube er meint, dass vom Echo der Eingabe (also das, was angezeigt wird während man tippt) maximal sechs Zeichen auf der Konsole angezeigt werden sollen.

    Das geht aber mit Standard C++ Mitteln garnicht. Dafür musst Du das Terminal manipulieren (und das ist je nachdem, ob es eine Linux-Konsole oder eine Windows-Eingabeaufforderung ist grundlegend unterschiedlich zu handhaben, dafür solltest Du im entsprechenden Unterforum fragen).


  • Mod

    Ich glaube, er möchte, dass man nicht mehr als 6 Zeichen eintippen kann. Er hat irgendwas mit Textpositionierung gemacht:

    Eingabefeld:        Blablabla
    

    Und er möchte nicht, dass man das BlablaBla überschreiben kann. Dazu steht meine erste Antwort.



  • So kannst du die Ausgabe der ersten 6 Zeichen realisieren.
    Jedodoch weiß ich net was passiert wenn du weniger wie 6 Zeichen hast. Wenns einen Fehler wirft solltest du ein

    string meinString;
    cin>>meinString;
    cout<<meinStrin.substr(0,6);
    

    Jedodoch weiß ich net was passiert wenn du weniger wie 6 Zeichen hast. Wenns einen Fehler wirft könntest du das so umgehen:

    string meinString;
    cin>>meinString;
    if(meinString.length()>6)
        cout<<meinString.substr(0,6);
    else
        cout<<mainString
    

    Dies betrifft jetzt aber nur die Ausgabe!
    Ich weiß nicht ob ich dich richtig verstanden habe.



  • LordJaxom schrieb:

    Ich glaube er meint, dass vom Echo der Eingabe (also das, was angezeigt wird während man tippt) maximal sechs Zeichen auf der Konsole angezeigt werden sollen.

    SeppJ schrieb:

    Er hat irgendwas mit Textpositionierung gemacht:

    Eingabefeld:        Blablabla
    

    Und er möchte nicht, dass man das BlablaBla überschreiben kann.

    exakt das ist das, was ich meinte



  • Da wirst du wie schon einmal erwähnt wurde auf das Betriebssystem schauen müssen. Das ist bei jedem Betriebssystem wohl anders geregelt. Vielleicht findest du eine Bibliothek die für dich abstrahiert.



  • ok, danke dann schau ich da mal rum



  • eingabe schrieb:

    Ich möchte das auf der Konsole maximal 6 Zeichen wieder ausgegeben werden. Also nur das Echo der ersten 6 eingegebenen Zeichen.

    Meinst du so einen Hack? :p

    #include <iostream>
    #include <string>
    #include <conio.h>
    using namespace std;
    
    int main()
    {
    	int counter = 0;
    	string str;
    	char c;
    
    	while( (c=getch())!='\r' && c!='\n' ) // Mit Enter beenden.
    	{
    		++counter;
    		if(counter<7)
    		{
    			cout << c;
    			str += c;
    		}
            // oder das str+=c hierher machen... weiß ja nicht, ob du trotzdem alle Zeichen speichern möchtest.
    	}
    }
    

  • Mod

    Das wäre beispielsweise der Hack für die DOS-Konsole.


Anmelden zum Antworten