string



  • es muss ersteinmal gesagt werden, dass ich ein anfänger bin:D

    #include "iostream"
    #include "string"
    using namespace std;
    
    int main(){
    
    cout<<"in wieviel sekunden soll der pc heruntergefahren werden?\n";
    string a;
    cin>>a;
    string b="shutdown -s -t "+a;
    system(b.c_str());
    return 0;
    }
    

    das progrämmchen hier funktioniert zwar doch ich würde gerne der bequenmlichkeit wegen die zeit in minuten eingeben. das heißt ich müsste die sekunden 60 machen z.b.: so
    ...
    string a=a
    60;
    cin>>a;
    ...
    doch so gehts nich.
    habt ihr ne idee.
    danke!!!



  • }
    cout<<"in wieviel sekunden soll der pc heruntergefahren werden?\n"; 
    int min;
    cin>>min; 
    stringstream a; 
    a << "shutdown -s -t " << (min / 60); 
    system(a.str().c_str()); 
    return 0; 
    }
    


  • sorry funzt net haste ne andere loesung



  • In der C++-FAQ findest du Informationen zum Umwandeln von Zahlen in Strings.

    MfG SideWinder



  • thx,sorry sowas hätte ich ider faq net erwartet



  • habs jetzt mal so probiert dochs funkt net!!! könnt ihr mir sagen wieso!!

    #include "stdafx.h"
    #include "iostream"
    #include "conio.h"
    #include "sstream"
    #include "string"
    
    using namespace std;
    
    int main()
    
    {
    
    char min,zeits; 
    cout <<"in wieviel minuten soll der pc heruntergefahren werden?\n";
    cin>>min;
    
    zeits=min*60;
    ostringstream Str;
    Str << zeits;
    
    string b="shutdown -s -t "+zeits;
    
    system(b.c_str());
    
    }
    

    thx



  • Ich versuchs mal anfängerfreundlich auszudrücken 🙂

    Die Variablen "min" und "zeits" hast du vom Typ char erzeugt.
    Char ist ein Datentyp, der für ein einzelnes Zeichen gedacht ist, also steht in char dann sowas wie z.B: 'd' oder '4' oder '='
    Damit kannst Du also nicht rechnen selbst wenn Du vermeintlich Zahlen eintippst.
    Er sieht es als ein (Char)acter an und arbeitet auch so damit.

    Also müssen "min" und "zeits" vom Typ (int)eger sein. Dieser ist für Zahlen ohne Nachkommastellen reserviert.

    Die Funktion

    system(b.c_str());
    

    erwartet allerdings einen String (einen ganzen text bzw enie Folge von chars wenn Du so willst). Deshalb muss man seinen int-wert in einen string umwandeln.
    Dafür gibt es eine Funktion

    itoa(i,buffer,radix)
    

    itoa steht für int to alphanumeric (string)
    Ein Beispiel dafür wäre:

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    
    void main()
    {
    	string text;
    	int zahl;
    	char buffer[20];
    	cout << "Zahl: ";
    	cin >> zahl;
    	text = itoa(zahl,buffer,10);
    }
    

    hier liesst Du einen int (Zahl) ein und wandelst ihn in einen String um!

    Das ganze bauen wir jetzt noch in dein Programm ein und rauskommt:

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    
    void main()
    {
           char buffer[20]
           int zeit;  
           cout <<"in wieviel minuten soll der pc heruntergefahren werden?\n"; 
           cin>>zeit; 
           zeit=zeit*60; 
           string text = itoa(zeit,buffer,10);
           string b="shutdown -s -t "+text;
           system(b.c_str()); 
    }
    

    Das sollte dann klappen und ich hoffe ich konnte Dir die Materie ein bissel näher bringen 🙂



  • das ist dir gelungen vielen dank!!! hab noch nei so ne ausführliche antwort bekommen!!! thx


Log in to reply