Problem mit Cout (Umbiegen von Cout?)



  • den String bei jedem Wort: "umbruch" teilen,
    zentrieren (macht dann die Funktion: MitteZeichnen o.ä.) und dann
    einen realen Umbruch (d.h. \n ) anhängen...



  • Und was hat es mit der Ausrichtung und anzahlZeichenrechnen auf sich?

    Fakt ist jedenfalls, dass deine Funktion nur "OK" ausgibt und ich nicht weiß, was du mit einer Umlenkung von cout meinst.



  • das mit der Umlenkung hat sich geklärt.
    Die FUnktion ist generell "defekt", da er z.B.
    bei dem Satz :

    Hallo, umbruch Hallo2!

    folgendes ausgibt:

    Hall
    uch Hallo2!

    Ist irgendwo ein Fehler mit dem "String Replaxe".

    Ich werde die Funktion nochmals neu schreiben.

    Vielen Dank an alle.
    Thread kann somit geschlossen werden, da es ja nichts mit
    cout mehr auf sich hat.



  • Reyman schrieb:

    Vielen Dank an alle.
    Thread kann somit geschlossen werden, da es ja nichts mit
    cout mehr auf sich hat.

    thread wird natürlich nicht geschlossen, da er durchaus anlass sein kann, dass jemand was total kluges und hilfreiches schreibt.

    und wenn nicht, schließt ihn die zeit von alleine.



  • Wenn du wirklich nur, jedes "umbruch" durch ein "\n" ersetzen willst, könntest du das so machen, wie im Code unten. Du solltest dir vielleicht mal diese Seite anschauen.

    #include <iostream>
    #include <string>
    #include <conio.h>
    
    using namespace std; 
    
    string TextAusgeben(string strIn,string strbr) {
    	size_t iPos = 0;
    
    	while ( (iPos = strIn.find(strbr)) != string.npos) {	
    		strIn.replace(iPos,strbr.size(),"\n");
    	};
    
    	return strIn;
    }
    
    int main() {
    	std::cout << TextAusgeben("12345[umbruch]23456[umbruch]34567","[umbruch]");
    
    	getch();
    	return 0;
    }
    
    Ausgabe:
        12345
        23456
        34567
    

    EDIT:

    int iAnzahlDerZ(0);
    

    So initialisiert man keine elementaren Datentypen.

    int iAnzahlDerZ = 0;
    

    Das, was du gemacht hast, wäre ein Konstrukturaufruf einer Klasse



  • masterofx32 schrieb:

    EDIT:

    int iAnzahlDerZ(0);
    

    So initialisiert man keine elementaren Datentypen.

    int iAnzahlDerZ = 0;
    

    Das, was du gemacht hast, wäre ein Konstrukturaufruf einer Klasse

    Na na... erstere Variante ist aber die bessere. Zweiteres kreidet Herr Stroustrup in Exceptional C++ als unschön an. Stell Dir vor, Du hast eine Template-Funktion und hantierst mit einem Datentypen den Du nicht kennst. Dann möchtest Du den Konstruktor auf jeden Fall explizit aufrufen (ohne implizite Typumwandlungen). Was Dir natürlich nicht passiert, weil Du deine Konstruktoren immer schön explicit machst 😃



  • ich sehe die erste Variante auch als die schönere an.
    Werde das auch, da ich mich jetzt schon so dran gewöhnt
    habe auch nicht ändern.



  • Na gut 😉



  • Ihr schreibt wirklich

    for (int i(0); i < 4; ++i)
    

    ? Sieht ja doch sehr ungewohnt aus... *find*



  • der Mensch ist ein Gewohnheits-Tier 😉


Anmelden zum Antworten