Char-Arrays verbinden
-
Da du im C++-Forum gepostet hast: lass das mit den char-Arrays einfach. Nimm die Klasse
std::string(Header<string>), damit wird es wesentlich einfacher und weniger fehleranfällig.
-
Nur so am Range: char, unsigned char und signed char sind 3 verschiedene Typen, die nicht wirklich "referenz-kompatibel" sind, zumindest nicht soweit, dass es eine implizite Konvertierung von unsigned char* zu char* gibt.
Und warum kompliziert, wenn's auch einfach geht?
#include <string> #include was-man-auch-immer-für-"system"-braucht ::: int main() { ::: std::string temp = "echo "; temp += "hossa"; ::: system(temp.c_str()); ::: }
-
Hier ein Beispiel gib z.b. ein echo dann wird dir durch den system Befehl hallo ausgegeben. (Aber das ist alles frikelei
)#include <iostream> using namespace std; int main(int argc, char* argv[]) { char a[34]; // 29 + string hallo = 34 Zeichen (Nur so als BufferOverflow schutz string e =" hallo"; cin.getline(a,29); cout<<"a enthaelt: " << a << endl; strcat(a,e.c_str() ); system( a ); return 0; }Aber wie schon andere geschrieben haben nimm einfach std::string
-
Wieso postest du denn so ein mieses Mischbeispiel? Am Ende benutzt jemand das noch. Entweder C-Strings oder std::string (oder eine andere String-Klasse), aber so ein kruder Mix bringt keinem was.
-
Frikelei schrieb:
char a[34]; // 29 + string hallo = 34 Zeichen (Nur so als BufferOverflow schutz string e =" hallo";Und schom hast du das Leerzeichen vergessen. Besser kann man nicht zeigen, dass C-Strings Mist sind.
-
manni66 schrieb:
Und schom hast du das Leerzeichen vergessen. Besser kann man nicht zeigen, dass C-Strings Mist sind.
Mist, Off-by-One Overflow so schnelll kanns gehen.

-
TyRoXx schrieb:
Taeli schrieb:
ich habe folgendes Problem: Ich möchte mit system(cont char*) einen Befehl ausführen lassen (normalerweise geht das in anderen Sprachen ja mit einem . oder + Operator).
Das geht in C++ auch mit einem
+.Leider geht das aber nur bei der Klasse std::string, bei char erhalte ich den C2110 error:
Compiler schrieb:
'+': Zwei Zeiger können nicht addiert werden.
Frikelei schrieb:
Hier ein Beispiel gib z.b. ein echo dann wird dir durch den system Befehl hallo ausgegeben. (Aber das ist alles frikelei
)Natürlich ginge das in diesem Fall hier mit einem Stream auch. Aber das ECHO war jetzt in diesem Fall mal nur als Beispiel gedacht. In system() steht dann natürlich ein etwas komplizierterer Befehl als ECHO ^^.
_matze schrieb:
Da du im C++-Forum gepostet hast: lass das mit den char-Arrays einfach. Nimm die Klasse
std::string(Header<string>), damit wird es wesentlich einfacher und weniger fehleranfällig.Muss ich dann evtl. noch irgendetwas mit std::string machen, bevor ich ihn in system() verwenden kann? Zur Zeit erhalte ich noch:
Compiler schrieb:
'system': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglich
Gibt es da irgendeine Konvertierungsmöglichkeit?
-
Taeli schrieb:
Muss ich dann evtl. noch irgendetwas mit std::string machen, bevor ich ihn in system() verwenden kann? Zur Zeit erhalte ich noch:
Compiler schrieb:
'system': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglich
Gibt es da irgendeine Konvertierungsmöglichkeit?
Ja, steht einen Beitrag nach dem von _matze.
-
Frikelei schrieb:
... string e =" hallo"; ... strcat(a, e.c_str() );Schau dir mal den 2. Paramter von strcat an.
Kommst du selber drauf?
-
DirkB schrieb:
Frikelei schrieb:
... string e =" hallo"; ... strcat(a, e.c_str() );Schau dir mal den 2. Paramter von strcat an.
Kommst du selber drauf?
Achja, entschuldigung, das hab ich glatt übersehen...

na gut, dann vielen Dank für die Hilfe!

-
Hier kannst du auch mal stöbern, was du so alles mit
std::stringmachen kannst: