Zwei char* miteinander verknüpfen
-
Hallo,
hab ne Variable *tmp und eine *value. Die möchte ich beide verknüpfen, mit strcat geht das wohl nicht ...
jemand ne andre Idee?
Haut rein
-
Hallo
Benutzt lieber std::string, dann geht das einfach mit dem +-Operator.
Ansonsten las dich ins Ansi-C Forum verschieben.bis bald
akari
-
sind es Zeichenketten? Wenn ja, dann verwende std::string und += operator, falls möglich.
Ansonsten brauchst Du ein char-array, das Du beschreiben darfst und genug Platz für beide Zeichenketten bietet...
-
char *x = new char[strlen(tmp) + strlen(value)+1];
... und dann reinkopieren.
-
und dann reinkopieren:
#include <cstring> // ... std::strcpy( x, tmp ); std::strcat( x, value ); // ... delete[ ] x; // und das Freigeben nicht vergessen!
greetz, Swordfish
-
mycrypt schrieb:
...mit strcat geht das wohl nicht ...
Also ich kenne Fälle, in denen das geht. Du solltest wohl kurz erläutern, warum "das wohl nicht geht".
Gruß,
Simon2.
-
char *val = "agga"; char *tmp = "ugga"; string str = val; str += tmp;
-
Und dann, wenn man einen const char* braucht:
str.c_str();
-
C++
#include <string> std::string my_string(std::string(tmp) + value);
C/C++
#include <cstring> const std::size_t length_left(std::strlen(tmp)); char* my_string(new char[tmp + std::strlen(value) + 1]()); std::strcpy(my_string, tmp); std::strcpy(my_string + length_left, value); // TODO: Use my_string delete [] my_string;
...
-
a.u. schrieb:
char *val = "agga"; char *tmp = "ugga"; string str = val; str += tmp;
char* blah = "blah", *blubb = "blubb"; string str(blah); str.append(blubb);
// delete N O T H I N G
-
(D)Evil schrieb:
std::strcpy(my_string + length_left, value);
warum nicht gleich
std::strcat( )
?greetz, Swordfish
-
weil du damit einen schleifendurchlauf sparen solltest ...
(1) string durchgehen für strlen (length_left)
(2) string durchgehen für strlen (value length)
(3) beide string tmp durchgehen für strcpy
(4) beide string value durchgehen für strcpystd::strcat
(1) string durchgehen für strlen (length_left)
(2) string durchgehen für strlen (value length)
(3) string tmp durchgehen für strcpy
in std::strcat
(4) string durchgehen für ende
(5) string value durchgehen für kopieren=> 4 fällt weg
-
Es gibt also tatsächlich Leute, die sich über solche Optimierungen den Kopf zerbrechen...
greetz, Swordfish