string + char geht nicht :(
-
wieso geht das nicht, oder hab ich was übersehn, ich guck schon jetzt über ne stunde:
void SaveFile(std::string sFileName, char *arg1, char *arg2) { std::string sTemp = "_" + arg1 + "_v" + arg2 + "."; // .... }
bei mir kommt die fehlermeldung:
invalid operands of types `const char[2]' and `char*' to binary `operator+'
-
wieso übergibst du ein argument als string, und die andere als char * ?
Wo macht das Sinn ?Devil
-
hi
entweder so
[cpp]
string sTemp = "_" ;
string ssTemp=sTemp+ arg1+"_v" + arg2 + ".";
[quote]oder mit einer funktion, mehrere möglickeiten..
http://www.cppreference.com/cppstring_details.html#append
-
naja, die beiden args kommen von argv[] und das andere ist halt der dateiname. aber sFileName kann man sich eigentlich wegdenken, weil das hat ja nichts mit dem fehler zu tun.
-
@elise
also das, mit den zwei variablen funktioniert - komischerweise.
wieso ist das so? is doch eigentlich voll umständlich. ist das ein bug von std::string?
-
Naja, in deinem Code addierst du char-Arrays und char-Pointer, bei elises Code addierst du char-Pointer/-Arrays mit std::string, weshalb der überladene Operator von letzterem zum Einsatz kommt.
--> kein Bug
-
elise schrieb:
string sTemp = "_" ; string ssTemp=sTemp+ arg1+"_v" + arg2 + ".";
Ein bissele umständlich, oder?
std::string sTemp = std::string("_") + arg1 + "_v" + arg2 + ".";
Wie wär's damit?
-
Die einzelnen Verkettungen werden von links nach rechts aufgelöst, also:
char* + char*;
das Ergebnis davon + char*;
das Ergebnis davon + char*;
...
das Ergebnis davon wird dem string zugewiesen.char* + char* gibt es aber nicht, nur char* + std::string oder std::string + char*. Deshalb muss der erste oder zweite Operand ein std::string sein. Am einfachsten lebt man, indem man konsequent std::string verwendet (bzw. besser "const std::string&" für Parameter).