Zeichenkettenfeld
-
Wie würdet ihr ein Zeichenkettenfeld erstellen?
Ist dieser Coder sauber?#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char **pStringArray = new char*[3]; for (int i = 0; i < 3; i++) { pStringArray[i] = new char[25]; } strcpy(pStringArray[0], "Hallo"); strcpy(pStringArray[1], "Welt"); strcpy(pStringArray[2], "!"); for (int i = 0; i < 3; i++) { printf("pStringArray[%i]: %s\n", i, pStringArray[i]); } for (int i = 0; i < 3; i++) { delete []pStringArray[i]; pStringArray[i] = 0; } delete []pStringArray; pStringArray = 0; system("pause"); return 0; }
-
Hi,
also wenn es c++ sein soll, dann sollte es auch c++ sein!
Deshalb würde ich es so machen:
#include <string> #include <vector> #include <iostream> typedef std::vector< std::string > StringArray; void MakeStringArray() { StringArray StrArr; StrArr.push_back( "Erster String" ); StrArr.push_back( "Zweiter String" ); StrArr.push_back( "Dritter String" ); StrArr.push_back( "Vierter String" ); for ( size_t i = 0; i < StrArr.size(); ++i ) std::cout << StrArr[i] << std::endl; } int _tmain(int argc, _TCHAR* argv[]) { MakeStringArray(); return 0; }
Gruss
EarlyBird
-
Hi!
@Xa1Ro:
Ich würde auch die Methode von EarlyBird bevorzugen oder ein string-Array nehmen, also 'std::string myString[3];'. Und wenn du nicht unbedingt dynamische Speicherreservierung benötigst, könntest du es auch direkt initialisieren:
char welt[3][25] = {"Hallo", "Welt", "!"};
Letzendlich ist wohl aber die Version mit dem Vektor die einzigst sinnige Methode. Auch dort kannst du angeben wieviele Strings du willst:
std::vector < std::string > welt(3);Code-Hacker
-
Xa1ro schrieb:
Ist dieser Coder sauber?
Wieso nicht? Die meisten std::vectorstd::string Implementationen werden auch nix anderes machen, nur netter verpackt.
-
Danke!
@groovemaster: Ich meinte ob mein Code sauber ist. Ich habe halt immer noch diesen C-Style drin.
-
Asoo, ich dachte du hast einen Fremdcode und wolltest wissen, ob der Coder bekloppt ist.
Naja, C++ ist der Code trotzdem nicht, vielmehr C+. In C++ greift man auf entsprechende Container zurück, wie zB std::vector und std::string. Das erspart einem auch die str... Funktionen, die langsamer arbeiten als es notwendig ist.