[C/C++] Integer in String umwandeln und Strings verknüpfen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Gibbon, 5. Juni 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. Juni 2007
    Integer in String umwandeln und Strings verknüpfen?

    Tja ich habe mir heute mal ein Anfängertutorial für C++ angeschaut und bin grade bei den Funktionen, die ich ja schon aus VB6 kenne. Mein Code sieht zur Zeit so aus:

    Code:
    #include<iostream>
    #include<string>
    
    using namespace std;
    
    
    string divide(int,int,bool = true);
    
    int main()
    {
     int Divident;
     int Divisor;
     string Buffer;
     bool NullCheck;
     
     cout<<"Bitte den Dividenten eingeben\n";
     cin>>Divident;
     
     cout<<"Bitte den Divisor eingeben\n";
     cin>>Divisor;
     
     cout<<"Soll die Division durch Null erlaubt werden?\n";
     cin>>Buffer;
     
     if ( Buffer == "ja" ) { NullCheck = true; } else { NullCheck = false; }
     
     cout<<divide(Divident,Divisor,NullCheck);
     
     cin>>Buffer; // Wenn das nicht da steht, beendet sich das Programm. Auch cin.get(); hilft nichts.
    }
     
    
    
    string divide(int Divident, int Divisor, bool NullCheck)
    {
     if ( NullCheck == true && Divisor == 0 )
     {
     return "Division durch 0 ist nicht zulässig!\n"; 
     }
     
     else if (( NullCheck == true && Divisor != 0 ) || ( NullCheck = false ))
     {
     [COLOR="Red"] return Divident<<" geteilt durch "<<Divisor<<" ergibt: "<<Divident / Divisor<<"\n";[/COLOR]
     }
    }
    1. Problem

    Das rot markierte ist mein erstes Problem. Beim Kompliieren gibt mir DEV C++ den Fehler: "invalid operands of types 'int' and 'const char[16]' to binary 'operator<<'"

    Liegt das daran, dass die Funktion als String deklariert ist, Divident und Divisor jedoch Integer sind?

    -----------

    2. Problem (Frage)

    Ich habe zwei Strings:

    1. "hal"
    2. "lo"

    Ich möchte diese Strings nun zu einem zusammen fügen, also zu "hallo". In VB ging das ganz einfach so:

    Code:
    Dim hallo As String
    
    hallo = "hal" & "lo"
    In C++ geht das jedoch nicht. Auch mit hallo = "hal" + "lo" komme ich nicht weiter. Wie geht das denn?

    Danke schonmal für eure Antworten, ihr C++-Profis ^^
     
  2. 5. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Hi !

    Einen String zu einer Zahl umwandeln koenntest du per:
    Code:
    atoi (str.c_str ());
    machen. Das waer aber die C Loesung, wahrscheinlich gibts in C++ dafuer noch eine bessere.

    ---

    Beispiel ( Mit 'Hello' + 'World' ):

    Code:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main (void)
    {
     string hello ("Hello");
     string world ("World");
    
     hello += " ";
     hello += world;
     hello += "\n";
    
     cout << hello;
     return 0;
    }
    
     
  3. 5. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Danke, das mit dem Strings zusammenfügen hat funktioniert

    Aber das "atoi (str.c_str ());" geht nicht. Beim Googeln bin ich auf einige Zeilen Code gestoßen, die dazu dienen sollen, eine Zahl in einen String umzuwandeln, weil es anders nicht geht. Ist jemandem eine Funktion bekannt, die Zahlen in Strings umwandelt oder muss ich wirklich die Methode mit dem mehrzeiligen Code nehmen? X(

    Wieso sollte es denn in VB eine Funktion dafür geben, in C++ aber nicht? ;(
     
  4. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Also zu deinem Beispiel oben, anstatt ne Funktion die einen String-Wert zurück gibt, könntest du die Sätze in der Funktion einfach mit einer cout-Anweisung ausgeben und aus der Funktion ne void-Funktion machen.
     
  5. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Gute Idee .. da ich grade erst mit C++ angefangen habe, und in dem Tutorial bisher "void" kaum verwendet wurde, bin ich darauf selber nicht gekommen. Danke für diese Idee, BW habt ihr beide jedenfalls schon einmal.

    Diese Fragen habe ich aber noch:

    • ist DEV-C++ ein guter Compiler? Die Exe-Dateien, die er erstellt, sind nämlich ziemlich groß (~470 KB für eine kleine Konsolenanwendung, die einen Text ausgibt)
    • wie kompliiere ich ein Programm, sodass es auf Linux verwendbar ist? Brauch ich da einfach einen anderen Compiler, in den ich den Code einfüge und dann kompliiere?
     
  6. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Hi !

    Code:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main (void)
    {
     int a;
     string b;
     
     a = 20;
     b = "10";
     
     cout << a / atoi (b.c_str ()) << endl;
     
     return 0;
    }
    Mfg,

    Kolazomai
     
  7. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    DEV-C++ ist kein Compiler, sondern nur einen IDE, als ein Editor. Der eigentliche Compiler, der verwendet wird ist MinGW. Die 470 KB sind für MinGW i.O., der Microsoft Compiler schaffts glaub ich kleiner.

    Um dein Programm unter Linux zu laufen, musst du es erstmal auf Linux portieren, da nicht alle Funktionen (v.a. WinAPI-Funktionen) unter Linux existieren. D.h. du musst dann windows-spezifische Funktionen mit dem Linux-Pendant ersetzen. Danach ganz einfach (unter Linux) mit Gcc kompilieren et voilà.
     
  8. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    @Kolazomai: jetz hat es funktioniert, danke ^^

    @pyro: was wären denn Beispiele für windowsspezifische Funktionen außer der APIs, die ich schon aus VB kenne?
     
  9. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Socket-Funktionen und -Typen, wie z.B. closesocket(): Unter Linux isses close(). Unter Linux is ein Socket vom Typ int, unter Windows isses der Typ SOCKET. etc.
     
  10. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Hi!

    Windows und Linux unterscheiden sich grundsaetzlich in folgenden Punkten:
    • I/O ( Linux: Alles ist eine Datei ) wie Sockets, Files
    • Windowsspezifische Gebiete ( z.B. Registry, Dienste, ... )
    • LowLevel Sachen ( Kernel, Treiber, etc. )
    • Darstellung ( Linux: XServer ) ( Die meisten GUI-ToolKits sind aber crossplatform ( z.B. wx, Qt, GTK(mm) )
    • Aufbau/Anordnung mancher Sachen.
    • Zu includierende Header.
    • FunktionsNamen / Parameter, die dasselbe machen ( z.B. Windows: Sleep (tausendstel_sekunden); Linux: sleep (sekunden); )

    Meistens wird in der API(-Dokumentation) darauf hingewiesen, dass die spezielle Funktion nur unter Windows/Linux laeuft, und man zum portieren die und die Funktion benutzen soll.

    Das Ganze schaut dann im SourceCode so aus:
    Code:
    #ifdef _WIN32
    // Der Compiler compiliert diesen Code, wenn du unter Windows bist
    #else
    // Der Compiler compiliert diesen Code, wenn du NICHT unter Windows bist
    #endif
    
    SocketBeispiel:
    Code:
    #ifdef _WIN32
    #include <winsock.h>
    #include <io.h>
    typedef SOCKET socket_t;
    #else
    #include <sys/socket.h>
    #include <sys/types.h>
    typedef int socket_t;
    #endif
    // In deinem Programm ist nun 'socket_t' ein Socket, und du brauchst nicht jedes mal '#ifdef ...' einbaun
    Das hat zu Scriptsprachen den riesen Vorteil, dass das Programm crossplatform ist, ohne Performance zu verlieren, da beim compilieren ueberprueft wird, ob Windows oder Linux und nicht waehrend Runtime.

    Mfg,

    Kolazomai
     
  11. 6. Juni 2007
    AW: Integer in String umwandeln und Strings verknüpfen?

    Dann ist ja hier alles geklärt und ich kann closen, danke nochmal an alle für die Hilfe
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.