Char Array als return Value
-
Also ich versuche mit der folgenden Funktion aus einen Int Array einen Char Array zu machen ... Aber irgendwie hapert es beim return value der funktion ... sie Funktioniert. Nur wie gebe ich einen Array zurück ? in PHP hätte ich einfach den Array zurückgegeben
<?php function test(){ $array[0] = 15; $array[1] = 43; return array; } ?>Aber ich merke immerwieder das in PHP so einiges einfacher war ... naja wie stelle ich das in C++ an ? Folgendes funktioniert leider nicht: ...
char intToCharString(int array[],int sizeOfArray){ char charArray[sizeOfArray]; for(int x=0;x<sizeOfArray;x++,array++){ charArray[x] = static_cast<char>(*array); } return charArray; }
-
Der Rückgabetyp deiner Funktion ist kein Array (das kannst du in C++ nicht als Rückgabe verwenden), sondern ein einzelnes Zeichen. Und ehe du dich mit den Komplikationen von nackten Arrays, Zeigern auf Arrays und Gültigkeitsbereichen auseinandersetzt, verwende doch lieber STL-Container (std::vector<>, eventuell std::string).
-
Ok Danke ... nun aber eine andere Frage ich wollte nicht gleich einen neues Thema eröffnen ...
Ich habe hier 3 Definitionen von Char arrays die meiner meinung eigentlich alle das selbe enthalten sollten wen ich die dann aber ausgebe haben alle drei unterschiedliche ausgaben zur folge wobei nur die letzte die eigentlich gewolte ist.
int test[] = {74}; char test1[] = {'H','a','l','l','o'}; char test2[5]; test2[0] = 'H'; test2[1] = 'a'; test2[2] = 'l'; test2[3] = 'l'; test2[4] = 'o'; char test3[] = "Hallo"; cout<<test1<<" "<<test2<<" "<<test3<<endl;Ausgabe:
HalloJ HalloHalloJ HalloDas J kommt ihrgendwie durch den int array test[] zustande
-
test3 besteht (im Gegensatz zu den beiden anderen Arrays) aus 6 Zeichen - außer den angegebenen noch ein '\0' als Markierung für "hier ist der String zu Ende".
(Die unsinnigen Ausgaben entstehen, weil die Ausgabe diesen Null-Terminator sucht und deshalb über das Array-Ende weiterliest, bis sie über einen stolpert - in deinem Beispiel vermutlich das High-Byte von test[0])
-
Wah geliebter C++ guru was würde ich ohne dich machen Danke

Ja so funktioniert das durchaus
char test1[] = {'H','a','l','l','o','\0'}; char test2[6]; test2[0] = 'H'; test2[1] = 'a'; test2[2] = 'l'; test2[3] = 'l'; test2[4] = 'o'; test2[5] = '\0';char test1[] = {'H','a','l','l','o',0}; char test2[6]; test2[0] = 'H'; test2[1] = 'a'; test2[2] = 'l'; test2[3] = 'l'; test2[4] = 'o'; test2[5] = 0;
-
Warum machst du es dir so unnötig schwer?
-
TomHalo schrieb:
Wah geliebter C++ guru was würde ich ohne dich machen Danke

So oder so solltest Du ein gescheites C++ Buch lesen. C++ ist toll -- aber wahrscheinlich eine der schlechtesten Sprachen für die "Mal-probieren-was-da-passiert-ohne-zu-wissen-was-ich-eigentlich-tue"-Strategie, die Du im Augenblick fährst.
Zur Abwechselung bringe ich mal ein aktuelles (sinngemäßes!) Zitat von John Carmack, dem Oberguru von ID Software:
Ich hätte mir mal ein paar schlaue C++ Bücher besorgen sollen, statt C++ über das Angucken von Code anderer Leute zu lernen. Das hätte mir Zeit und Ärger erspart.
(so etwas hat er auf der QuakeCon 2011 gesagt, entweder in seiner 90-Minuten Keynote oder in der 90-Minuten Q&A Session danach. Vielleicht finde ich die Stelle noch... dann ergänze ich diesen Beitrag mit einem richtigen Zitat und Quellenangabe)
Jedenfalls sollte Dir das zu denken geben, wenn selbst so jemand wie John Carmack das sagt. Der hat sich auch für intelligent genug gehalten und gedacht, dass er guten C++ Stil mal eben nebenbei ohne gute Bücher lernen kann.
Wenn so einer wie ich nur sagt "Hol Dir ein gutes Buch", hat das anscheinend kein Gewicht.
Nachtrag:
http://www.youtube.com/watch?v=00Q9-ftiPVQ#t=44m20sI've come around a lot to some of the C++ patterns on things as I developed more [...] I've come to appreciate more of the value of [C++] things. I whish somebody had made me read like some of the good C++ books early on rather than just looking at other people's C++ and picking it up.