Char nach AnsiString konvertieren
-
Hallo leutz
Ich bräuchte mal eure Hilfe
Ich möchte Einen String vom Typ char nach AnsiString Konvertieren
Hat Da jemand eine Idee???
Anderrum Geht es ja leicht:
char StrToChar(String Input) { char* CP = Input.c_str(); char Output = (char)CP; return Output; }
Jetzt brauche ich eine Funktion CharToStr()
corvin
-
Anderrum Geht es ja leicht:
Anderherum noch leichter (String ist ein typedef für AnsiString):
String test=char
Einen Blick in den Konstruktor....
-
Hallo,
Du weißt, dass ein char ein einzelnes Zeichen ist? Was soll diese Funktion machen?
Ansonsten nimmt der Konstruktor von AnsiString auch ein einzelnes char.// für char char ch = 'a'; AnsiString Zeichen(ch); // für char* char* text = "Hallo"; AnsiString atext = text;
[edit]
Dein Funktion da oben kann man auch so umschreiben.char StrToChar(String Input) { char Output = Input[1]; return Output; }
[edit]
-
Christian411 schrieb:
Anderrum Geht es ja leicht:
Anderherum noch leichter (String ist ein typedef für AnsiString):
String test=char
Nein, ich brauche einen String vom typ char
corvin
-
Nochmal, char ist kein String, sondern ein einzelnes Zeichen. Umwandlung siehe oben.
-
Braunstein schrieb:
// bearbeitet
1. Du weißt, dass ein char ein einzelnes Zeichen ist?
2. Was soll diese Funktion machen?1. Ja, aber man kann ja auch schreiben:
// char beispiel = "test"; cout << beispiel[3]; // gibt ein 't' aus
2. Sie soll einen einen char String in einen AnsiString umwandeln
corvin
-
Scheinbar weißt du es nicht, denn was du unter 1. hast kann man eben nicht schreiben. Richtig müsste das so heißen.
char* beispiel = "test";
Dein Punkt 2. ist schon im oberen Post beantwortet.
-
Kann jetzt so nicht genau vestehen, was du meinst:
-
Braunstein schrieb:
Scheinbar weißt du es nicht, denn was du unter 1. hast kann man eben nicht schreiben. Richtig müsste das so heißen.
char* beispiel = "test";
Dein Punkt 2. ist schon im oberen Post beantwortet.
sry
hab nich drangedacht
corvin
-
@Christian411
Jetzt versteh ich nicht was du meinst. Klar geht dein Code. AnsiString hat zwar keinen Zuweisungsoperator für char aber einen Konstruktor, und der wird in deinem Beispiel ja dann auch verwendet.
-
Sorry, mein freier Tag macht mich völlig fertig. Hatte corvin's Beitrag mit
"Nein, ich brauche einen String vom typ char"
dir zugeordent und wußte nicht, was ich falsch geschrieben hatte
-
Problem Gelöst:
ich poste mal schnell meinen code (gekürzt,ohne header)
// hab' den pointer vergessen, danke Braunstein char* StrToChar(String Input) { char* Output = Input.c_str(); return Output; } // überladene Funktion einmal mit String, einmal mit char void Ausgabe(String ausgabe) { Form1->ausgabe->Lines->Add(ausgabe); } void Ausgabe(char Causgabe) { String ausgabe = Causgabe; Form1->ausgabe->Lines->Add(ausgabe); } // :warning: ist ein Test(unten) void __fastcall TForm1::Button5Click(TObject *Sender) { String ausgabetext = "hallo welt"; Ausgabe(ausgabetext); ausgabetext = StrToChar(ausgabetext); Ausgabe(ausgabetext); } //---------------------------------------------------------------------------
Danke für die schnelle hilfe
corvin
PS.: Wer hätte Lust ein Gemeinschafsprojekt ins Leben zu rufen, in dem man versch. AllroundHeader (z.B.: kovertierungen, in Dateien schreiben/lesen....)entwickelt??????
-
Ein paar Hinweise.
1. bei der zweiten Ausgabe-Variante fehlt schon wieder ein*
void Ausgabe(char* Causgabe)
2. die char* Strings bei dir sollten alle const sein, da c_str() einen const char* zurückgibt und man darin auf keinem Fall etwas ändern sollte.
also:void Ausgabe(const char* Causgabe)
3. Wozu diese Konvertierungsfunktion StrToChar? Das macht c_str() von AnsiString doch schon (gibts bei std::string übrigens auch).
-
Entweder stehe ich heute völlig neben der Rolle, aber der Sinn will sich mir nicht erschliessen:
Wozu für String-> char eine extra Funktion?
ausgabetext = ausgabetext.c_str();
tuts schneller.
Des Weiteren ist es m.E. schlechter Stil in der Funktion char -> String nun dann eine direkte Ausgabe in ein Memo vorzunehmen. Hier müsste die Funktion einen Wert zurückgeben.
Aber auch hier wäre
Form1->ausgabe->Lines->Add(char);
schneller
-
Braunstein schrieb:
Ein paar Hinweise.
1. bei der zweiten Ausgabe-Variante fehlt schon wieder ein*
void Ausgabe(char* Causgabe)
2. die char* Strings bei dir sollten alle const sein, da c_str() einen const char* zurückgibt und man darin auf keinem Fall etwas ändern sollte.
also:void Ausgabe(const char* Causgabe)
3. Wozu diese Konvertierungsfunktion StrToChar? Das macht c_str() von AnsiString doch schon (gibts bei std::string übrigens auch).
1. OK, ich ändere es; es geht aber trotzdem
2. wieso nichts ändern???
3.
1. siehe mein PS.
2. sieht besser auscorvin
-