Probleme mit Texteingabe.



  • Hallo zusammen.

    Ich habe ein Problem, was wahrscheinlich sehr leicht zu lösen ist, aber ich komme im moment einfach nicht drauf und habe über die Suche auch nichts gefunden.
    Ich schreibe grade mit Dev-C++ ein Kommandzeilen-Programm in dem man einen Text eingeben kann, der zu einem späteren Zeitpunkt in einer Datei gespeichert wird. Allerdings ist die Eingbe auf nur ca. 4160 Zeichen ( 52 Zeilen ) beschränkt, obwohl ich die Eingabe über ein char Variable mit 1000000 Arrays mache. Wie kann ich diesen Text verlängern?

    char c_text[1000000];
    
    system ("cls");
        cout<<"\n\n\n";
        cout<<"\tBitte geben Sie den Text ein.\n\n\t>> ";
        gets(c_text);
    

    Ich habe schon versucht c_text statt als char als String zu deklarieren aber ich weiß ehrlichgesgt nicht, wie man direkt in eine Stringvariable schreiben kann.
    Es wäre nett wenn einer der Profis einen Tip für mich hätte.



  • VisionDPC schrieb:

    aber ich weiß ehrlichgesgt nicht, wie man direkt in eine Stringvariable schreiben kann.

    Zeilenweise mit std::getline.

    Und gets ist böse 😉



  • Vielen Dank für die superschnelle Antwort. Hättest Du vieleicht dazu ein ganz kurzes Syntaxbeispiel? Den Befehl kenne ich bisher noch nicht und die Suchfunktion sagt mir, das es "Keine Beiträge entsprechen Ihren Kriterien." geben würde. Und wenn der Text zeilenweise eigegeben wird, besteht dann die möglichkeit längere Texte über Copy und Paste einzufügen? Das ist nämlich die wichtigste Vorraussetzung.



  • #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string gesamt;
        string zeile;
        while(getline(cin, zeile))
        {
            gesamt += zeile + "\n";
        }
    }
    


  • Danke aber auch auf die gefahr hin, daß ich nerve aber das Hilft mir nicht wirklich weiter. Jetzt kann ich zwar einen Text unbegrenzter Länge eingeben, aber ich habe keine Abbruchbedingung wann die Eingabe aufhören soll.
    ich dachte mir, daß nachdem man einen kopierten Text eingefügt hat nur Enter gedrückt werden soll, und dann läuft das Programm weiter.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string gesamt;
        string zeile;
        while(getline(cin, zeile))
        {
            gesamt += zeile + "\n";
        }
    
    cout<<gesamt;
    system("pause");
    return 0;
    }
    


  • Ja, nach der Eingabe von Return wird die Zeile an gesamt angehängt und das Programm läuft weiter. Logischerweise wieder zur Eingabe, da dies eine Schleife ist.

    Die getline-Anweisung aus der Schleife zu extrahieren wird Dir sicher selbst gelingen...



  • Alles klar danke. Jetzt hab ichs kapiert. Hat mir aber trotzdem nicht weiter geholfen. Nach 52 Zeilen ist Ende mit der Eingabe. Alles was danach kommt wird einfach weggelassen. Ich muß Aber längere Texte hineinkopieren können. Außerdem gibt es in diesen Texten keine Zeilenumbrüche, Lehrzeichen o.Ä.. Es sind durchgehend HTML Bilderlinks, die hineinkopiert, zwischengespeichter und hinterher als fertige HTML-Seite gespeichert werden.



  • Möglicherweise ist das eine Beschränkung deiner Konsole.

    Wie wäre es denn mit Umleitung oder Lesen aus einer Datei? Einen Text in die Konsole zu kopieren, scheint mir ohnehin etwas umständlich.



  • Das mit der Textdatei hatte ich mir auch schon überlegt. Am Ende wird mir wohl auch nichts anderes übrig bleiben als auf diese Möglichkeit auszuweichen. Trotzdem danke für die nette Hilfe.


Anmelden zum Antworten