kein automatischer zeilenumbruch nach "cin"!



  • huu!
    also wie in der überschrift ja schon steht macht ja C++ nen automatischen Zeilenumbruch nach "cin"!
    doch ich will der nächste text direkt nach der eingabe steht! geht das irgendwie?
    hoffe ihr versteht was ich meine
    mfg

    PS: Ich benutz Borland Builder 5 @ Win XP Prof SP2



  • Hmm, ich dachte eigentlich immer, dass der Benutzer durch die Eingabe von "Enter" zum bestaetigen seiner Eingabe eben auch gleichzeitig ein newline einfuegt, oder lieg ich da falsch?

    Falls nicht muesste man wohl irgendwie entweder enter "abfangen" oder die Zeile danach wieder loesche. Ob und wie das geht weiss ich allerdings nicht. (eigentlich denke ich, dass Zeilenumbruch nachher loeschen nicht geht, weiss es aber nicht)

    wie immer anfaengerantwort.



  • cin "macht" überhaupt keinen Zeilenumbruch - den machst du selber (der Eingabepuffer von cin arbeitet zeilenorientiert, deshalb mußt du jede Eingabe mit ENTER bestätigen). Mit Standardmitteln fällt mir kein Weg ein, das zu umgehen, aber jenseits des Standards gibt es afaik Eingabefunktionen, die ohne Bildschirmecho lesen (d.h. du kannst selbst entscheiden, was von der Eingabe auf dem Bildschirm erscheint), z.B. man: getch.



  • #include <string>
    #include <iostream>
    #include <windows.h>
    using namespace std ;
    
    class GetSetCursor : public std::basic_ostream<char, std::char_traits<char> >
    {
            HANDLE hwnd;
            GetSetCursor(GetSetCursor&);
            GetSetCursor& operator=(GetSetCursor&);
    public:
            GetSetCursor():  hwnd(GetStdHandle(STD_OUTPUT_HANDLE)),
                    std::basic_ostream<char, std::char_traits<char> >(std::cout.rdbuf()){}
            void Get_xy(int* x, int* y)
            {
                CONSOLE_SCREEN_BUFFER_INFO screen_info;
                GetConsoleScreenBufferInfo(hwnd, &screen_info);
                *x = screen_info.dwCursorPosition.X;
                *y = screen_info.dwCursorPosition.Y;
            }
            void Set_xy(int x, int y)
            {
               COORD coords = {static_cast<short>(x), static_cast<short>(y)};
               SetConsoleCursorPosition(hwnd, coords);
            }
    };
    
    int main()
    {
       GetSetCursor cur; 
       int x, y;
       string s1;
       cur.Get_xy(&x, &y); 
       cin >> s1 ;
       cur.Set_xy(x+(int)s1.size(), y);
       cout << " Die Eingabe war: " << s1 << endl;  
    }
    


  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten