C-Zeichenketten
-
Ich bin auf diese Lösung gekommen, aber ich muss die Funktion ohne Kopie der als Argument übergebenen Zeichenkette anlegen!
[code]
void bc2c(const char* s)
{
char ar[*s];
int i = 0;while(i < 6)
{
ar[i] = *s;i++;
}ar[i] = '\0';
}

-
Nicht etwa so gemeint?
void convert(char* str) { size_t length = *str; while(length--) { str[0] = str[1]; ++str; } *str = '\0'; }
-
ich glaube, ist doch das gleiche

-
Arra_ schrieb:
ich glaube, ist doch das gleiche

Nein, deins ist keine Lösung, sondern Bockmist. Da wird bestimmt nichts funktionieren.
-
fricky schrieb:
Tachyon schrieb:
Mit einer Schleife.
geht auch ohne.

Und wie fügst Du das notwendige Nullzeichen ans Ende an, ohne alle Zeichen nach vorne zu rücken?
Oder meinst Du was anderes als folgende „Lösung“?
char const* c_str(char const* str) { return str + 1; }
-
fricky schrieb:
Tachyon schrieb:
Mit einer Schleife.
geht auch ohne.

Dann mach mal. Aber nicht nur für die 6 Zeichen des Beispiels.
-
was jetzt die richtige Lösung

-
Tachyon schrieb:
fricky schrieb:
Tachyon schrieb:
Mit einer Schleife.
geht auch ohne.

Dann mach mal. Aber nicht nur für die 6 Zeichen des Beispiels.
Keiner will? Dann mach ich's

std::string convert(size_t length, char* string) { std::string temp; temp += *string; if((length - 1) > 0) temp += convert(length - 1, string + 1); return temp; }Herauszufinden, wie das funktioniert und wie man es einsetzt, überlasse ich dem OP.
Grüße... Heiko
-
Fein, nur tut es nicht im Mindesten das, was gefordert wurde.
-
Jetzt muss ich das Ding ja doch noch einsetzen:
char bytestring[] = { 5, 'H', 'a', 'l', 'l', 'o' }; size_t length = static_cast<size_t>(bytestring[0]); char* begin = bytestring + 1; /* ... = */ convert(length, begin).c_str();Primär gings mir dann doch nur um die Schleife.
Grüße... Heiko
-
bwbg, Dein Code benutzt auch eine Schleife.
-
Konrad Rudolph schrieb:
bwbg, Dein Code benutzt auch eine Schleife.
Jo, und Kopieen. Ziemlich oft sogar.
-
(Jetzt muss ich mein nicht so ernst gemeintes Posting auch noch begründen)
Ja, streng genommen ist das eine Schleife - nur lediglich eine, die ohne entsprechende syntaktische Mittel (for, do, while) gebildet wird.
Ja, auch ein rekursiver Funktionsaufruf (mit Rückgabe einer Kopie) ist hier nicht wirklich sinnvoll.
In diesem Sinne... Heiko
EDIT: Typo
-
bwbg schrieb:
(Jetzt muss ich mein nicht so ernst gemeintes Posting auch noch begründen)
Meine Ausrede ist: nicht genügend Kaffee. Hmm, ich schaue mal, ob die Cafete noch auf ist.