int to char
-
irgendwie will das nich so...
folgendes problem:
ich habe einen dateinamen char[] X und will ihn in char[] Y kopieren. anschliessend soll die endung gelöscht, ein int I und eine neue endung angefügt werden.
wie mach ich das?
-
#include <string> std::string str1,str2; str2 = "TestTest"; //str2 = X; Char X in str2 kopieren str1.assign(str2,0,4); //Hier kannst du einen Zeiger auf dein Array einsetzen statt str2 //assign kopiert einen Teil des Strings, hier von Position 4 Zeichen //wenn du weisst wie lang der dateiname ist dann so wie oben str1.assign //wenn du nur weisst welche Endung dann -> (str2,0,str2.size()-4); 4 Zeichen dateiendung als Beispiel str1 += ".neue Endung"; cout << str1.c_str() << endl;
-
Im Kommentar sollte es natürlich heißen: von Position 0 an 4 Zeichen.
Die Umwandlung steht schon ein paar Beträge darüber.
-
stringstream foo; foo << bisheriger_name << deine_zahl;
per foo.str().c_str() kannst du es wieder als char* ansprechen.
-
hm, in welcher bibliothek steckt stringstream?
gibt es nicht eine einfachere methode (nen cast) um einfach ne int-zahl an ein char[] anzufügen?
-
hm, in welcher bibliothek steckt stringstream?
In der Standardbibliothek
Du meinst den Header, der ist sstream
gibt es nicht eine einfachere methode (nen cast) um einfach ne int-zahl an ein char[] anzufügen?
Nein, es gibt keinen Cast. Ein Cast ist eine Typumwandlung, was du willst ist einfach eine andere Darstellung. Was passt dir an der vorgestellten Methode nicht?
@Helium
als const char* :p
-
kingruedi schrieb:
hm, in welcher bibliothek steckt stringstream?
In der Standardbibliothek
Du meinst den Header, der ist sstream
hm, visual meckert sowohl bei <sstream.h> als auch bei <sstream> dass er stringstream nicht kennt
-
vergessen, dass stringstream im namespace std liegt?
-
Hi, mit sprintf kannst du auch einen INT in ein CHAR umwandeln:
char string[20]; int zahl=35; sprintf(string,"%d",zahl);
Erklärung von sprintf:
Die 1. Angabe, hier string gibt das Ziel an, in welches kopiert werden soll.
Wie beim normalen printf muss man auch Angaben über den Typ machen, hier %d weil es sich um einen INT Wert handelt.
Zu guter Letzt muss man noch den INT Wert angeben. Hier zahl
-
kingruedi schrieb:
vergessen, dass stringstream im namespace std liegt?
ja so kann mans ausdrücken...
T0mmy schrieb:
Hi, mit sprintf kannst du auch einen INT in ein CHAR umwandeln:
char string[20]; int zahl=35; sprintf(string,"%d",zahl);
Erklärung von sprintf:
Die 1. Angabe, hier string gibt das Ziel an, in welches kopiert werden soll.
Wie beim normalen printf muss man auch Angaben über den Typ machen, hier %d weil es sich um einen INT Wert handelt.
Zu guter Letzt muss man noch den INT Wert angeben. Hier zahlwunderbar, so etwas simples hab ich gesucht!
-
Ich empfinde sprintf als deutlich komplizierter. Deswegen habe ich es auch nicht erwähnt.
Und wenn es bequem und einfach sein soll hilft boosts lexical_cast:
string foo = lexical_cast<string>(35);