Double und String konkatenieren



  • Hallo Jenny,

    jenny.caros schrieb:

    Es müsste also heissen:

    #include <cstring>
    #include <iostream>

    using namespace std;

    int main(void)
    {
    CString a = "Hallo";
    double b = 2.7;

    cout << a + " " + b << endl;
    return 0;
    }

    Was muss man machen um beide konkatenieren zu können?

    Es ist nicht klar, was Du meinst.

    Es gibt eine Klasse CString von Microsoft in der ATL- oder MFC-Umgebung. In diesem Fall schaue Dir die Methode CString::Format an.

    Und es gibt C-strings, das sind nakte char-arrays, für die der Header #include <cstring> Funktionen bereitstellt. Dann versuche es mit strncat oder strcat und vorheriger Umwandlung des double in Text mit sprintf - dann wäre das C-Forum für Dich das richtige.

    Was soll das Ergebnis der Konkatenation sein? Willst Du sie hintereinander ausgeben, oder möchtest Du einen neuen CString oder C-string als Ergebnis?

    Gruß
    Werner



  • Danke nochmal für die Antworten. Ich will den CSTring ausgeben mit cout. Mit String ist das kein Problem, nur wie geht man mit CStrings um um sie auszugeben?



  • Sory Kollege, aber du liest dir offensichtlich die Beiträge hier nicht wirklich durch.

    Werner hat eben auf die Mehrdeutigkeit deines Wortes CString hingewiesen, da wäre eine Antwort nötig.

    Zweitens wäre das gewünschte Ergebnis mal ganz interessant zu wissen.

    Drittens stehen im Prinzip sämtliche Lösungen schon auf den vergangenen 2 Seiten.

    Viertens mit welchem Buch/Lehrer/Tutorial lernst du, dass du eine einfache Stringausgabe nicht hinbekommst?

    int main()
    {
    	char str1[] = "Hallo ";
    	double d = 3.1415927;
    
    	cout << str1  << d << endl;
    
    	stringstream ss;
    	ss << str << d;
    
    	string result = ss.str();
    
    	char * cstr = result.c_str();
    
    	cout << cstr << endl;
    
    	return 0;
    }
    

    Wenn dieser unschöne Code nicht hilft, dann willst du nur trollen.



  • char * cstr = result.c_str();
    

    Bist Du sicher, dass das geht?



  • Hallo Jenny,

    jenny.caros schrieb:

    Danke nochmal für die Antworten. Ich will den CSTring ausgeben mit cout. Mit String ist das kein Problem, nur wie geht man mit CStrings um um sie auszugeben?

    Das ist ein ungewöhnlicher Wunsch. Ungewöhnlich deshalb, weil in den Umgebungen, in denen CString verwendet wird, normalerweise keine Konsole existiert, sondern nur Fenster. Das macht jede Ausgabe auf std::cout wirkungslos.
    Umgekehrt gilt, wenn eine Konsole da ist, macht es i.A. wenig Sinn CString zu benutzen. Dann nehme lieber std::string.

    Aber wie auch immer ...
    Die Klasse CString besitzt einen operator nach const char*. Also:

    CString s = "egal";
        cout << static_cast< const char* >(s) << endl;
    

    Dazu benötigst Du natürlich noch ein #include, in welchem CString definiert ist. Dein von Dir gepostetes Programm enthält kein solches #include.
    Falls das fehl schlägt, dann setze bitte in Deinen Projektsettings für 'All Configurations' General->Character Set->'Not Set'.

    Was ist das für ein Progranmm, an dem Du arbeitest. Konsole, MFC-Applikation, Win32 mit Fenster, DLL, ... ?

    Gruß
    Werner



  • Lieben Dank Werner. Und auch an die anderen. Dieses c_str() was hier angegeben wurde wandelt einen String in einen CString um oder? Es geht um die umgekehrte Umwandlung von einem CString in einen String. Kam die hier schon iwie vor? Sorry falls ich sie übersehen habe.



  • Das ist für mich ein Troll...

    Alle Fragen sind mal wieder unbeantwortet geblieben...



  • Hallo Jenny,

    versuche doch einfach mal, auf unsere Fragen zu antworten. Das wäre notwendig, damit wir Dir wirklich helfen können. Ich habe Sie Dir hier noch einmal alle zusammen gestellt:

    CString = char* bei dir? Oder irgendwas anderes?
    möchtest du einen string haben oder beides "einfach nur" nach cout ausgeben?
    Was verstehst du nicht?
    Wieso zum Geier bist du auf einmal bei CString gelandet?
    jenny.caros schrieb: Ich will statt einem string einen cstring das ist alles. Sorry nochmal. Frage: warum?
    Was soll das Ergebnis der Konkatenation sein?
    Willst Du sie hintereinander ausgeben, oder möchtest Du einen neuen CString oder C-string als Ergebnis?
    mit welchem Buch/Lehrer/Tutorial lernst du?
    Was ist das für ein Progranmm, an dem Du arbeitest. Konsole, MFC-Applikation, Win32 mit Fenster, DLL, ... ?

    .. und wenn Du wirklich CString von Microsoft meinst, dann schreibe bitte 'CString von Microsoft'.

    Gruß
    Werner



  • Vielleicht versteht sie auch nicht, dass der Bindestrich in C-String wichtig ist und nicht einfach eine andere Schreibform.



  • Also die Variablen werden mit CString deklariert und alles unter einer MFC-Application.



  • Hallo Jenny,

    jenny.caros schrieb:

    Also die Variablen werden mit CString deklariert und alles unter einer MFC-Application.

    prima - Du hast eine von 9 Fragen beantwortet (die letzte).
    Da stellt sich jetzt aber eine weitere Frage:

    Angenommen Du schreibst in Deinem Programm

    cout << "Hallo - das ist eine Ausgabe" << endl;
    

    wo siehst Du das dann?

    Gruß
    Werner



  • Hallo Werner,

    Du sagtest: "Die Klasse CString besitzt einen operator nach const char*". Kann man von const char* nicht nach String? Es geht mir nur um die Umwandlung von String nach CString. Ich weiss es hört sich blöd an, aber...





  • Besten Dank Skym0sh0 :). Und Sorry dass ich so verwirrend war. Wisst ihr vllt. nebenbei warum man keinen String in eine Datei schreiben kann?

    In Kurzform:

    fstream g;
    string Gruss = Hallo;
    
    g << Hallo;
    

    Wieso funktioniert das nicht?



  • Ich meine natürlich:

    fstream g;
    string Gruss = Hallo;
    
    g << Hallo
    

    Sorry 🙂



  • jenny.caros schrieb:

    Besten Dank Skym0sh0 :). Und Sorry dass ich so verwirrend war. Wisst ihr vllt. nebenbei warum man keinen String in eine Datei schreiben kann?

    dazu hast du doch schon Threads geöffnet, in denen du auf Fragen nicht mehr reagierst.


  • Mod

    Welchen Namen der Datei würdest du denn erwarten? Falls du jetzt "g" antworten möchtest, dann ... nun, dann weiß ich auch nicht, was man dir noch sagen soll, außer dass es Unsinn ist und du nochmal ganz von vorne mit C++ anfangen solltest.



  • fstream g;
    string Gruss = Hallo;
    
    g << Gruss;
    

    Warum geht das nicht?


  • Mod

    Jetzt reicht's aber. Erst einmal 8 Stunden Pause für dich und denk darüber nach, wie man sich benimmt.


Anmelden zum Antworten