Zum Inhalt springen

string[] <-> char[]


Empfohlene Beiträge

Geschrieben

Hallo

Habe zwei simple fragen:

1.) Ich habe von der Klasse string( string.h ) ein Array erzeugt. Ist es nun möglich dieses Array in ein char Array umzuwandeln. Welche Möglichkeiten gibt es da?

2.) Wie kann man den inhalt eines String Arrays ausgeben?

Besten Dank im Vorraus

Rain

Geschrieben
Originally posted by Rain

Hallo

Habe zwei simple fragen:

2.) Wie kann man den inhalt eines String Arrays ausgeben?

Besten Dank im Vorraus

Rain

Denke mal das du die STL benutzt.

probier mal cout << Stringname[index] << endl; ;)

Geschrieben
Originally posted by Rain

cout funkt nicht,

Klar funktioniert das, und wenn du so nett wärest, die Fehlermeldung zu posten, könnten wir auch rausfinden, warum es bei dir nicht geht.

Ich möchte das String Array in ein char* Array umwandeln.
Was denn nun? Oben war es noch ein char-Array. Das ist ein ziemlicher Unterschied.
Geschrieben
Originally posted by Rain

Ist es nun möglich dieses Array in ein char Array umzuwandeln. Welche Möglichkeiten gibt es da?

@Klotzkopp:

Er wollte von Anfang an in ein Char Array wandeln. Da hat sich nichts getan...

Geschrieben
Originally posted by Freak4life

@Klotzkopp:

Er wollte von Anfang an in ein Char Array wandeln. Da hat sich nichts getan...

In seinem letzten Beitrag sprach Rain von einem Array von char*. Das würde auch mehr Sinn machen, weil ein char-Array nur einen einzigen String aufnehmen kann, nicht mehrere.
Geschrieben

Danke für eure Bemühungen. Hab das ganze schon gelöst.

Ich wandle jetzt ein string array in ein char* array. Ich hab mich wohl schlecht ausgedrück!

So hab ich das gelöst

string st = "text";

char* stch = (char*) st.c_str();

Bye

Rain

Geschrieben
Originally posted by Rain

Ich wandle jetzt ein string array in ein char* array. Ich hab mich wohl schlecht ausgedrück!

So hab ich das gelöst

string st = "text";

char* stch = (char*) st.c_str();

Das ist aber nur ein einzelner String, kein Array. Außerdem ist das, was du da machst, möglicherweise gefährlich. Der Zeiger, den c_str zurückliefert, ist nur solange gültig, wie der String nicht verändert oder zerstört wird. Du darfst auch auf keinen Fall versuchen, den String über den Zeiger zu verändern. Der Zeiger ist ursprünglich const. Das hast du durch den Cast zwar formal umgangen, aber verändernde Zugriffe über diesen Zeiger können dir trotzdem noch um die Ohren fliegen.

Generell gilt, dass bei einem Const-Cast der Programmierer ganz genau wissen sollte, was er tut.

Geschrieben
Originally posted by Rain

Danke für eure Bemühungen. Hab das ganze schon gelöst.

Ich wandle jetzt ein string array in ein char* array. Ich hab mich wohl schlecht ausgedrück!

So hab ich das gelöst

string st = "text";

char* stch = (char*) st.c_str();

Bye

Rain

Besser waere:

string st = "test";

char* stch = (char*) st.c_str();

int nLength = strlen(stch);

nLength ++;

char* pstrNewString = new char[nLength];

strcpy( pstrNewString , stch );

Dann haste eine Kopie und keine Probleme wenn st veraendert wird und moeglicherweise ein realloc kommt.

Frank

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...