string in chararray umwandeln ( ich weiß, ich bin nicht der erste ..)
-
wenns unbedingt ein Einzeiler sein soll
char* p = static_cast< char* >( memcpy( new char[ s.size() + 1 ], s.c_str(), s.size() + 1 ) );
-
Storm.Xapek.de schrieb:
Meinst du sowas?
#include <iostream> #include <string> using namespace std; int main() { string input = "FooBla"; const char* chararray = input.c_str(); cout << chararray << endl; return 0; }Oder eher sowas?
char *chararray = new char [input.size()+1]; strcpy (chararray, input.c_str());Danke an alle
.. Was is der Unterschied zwischen der ersten und der zweiten Methode`?
-
Storms zweite, campers und meine Methode erzeugen ein neues veränderbares Array, welches Du selbst freigeben musst. Storms erste Methode liefert Dir ein unveränderbares (const) Abbild des Strings, welches gültig bleibt bis Du den String veränderst.
-
Also mein BCB 6 schluckt das nicht ..
string s = edi_display->Text; char* arr = new char[s.size() + 1]; copy(s.begin(), s.end(), arr); arr[s.size()] = '\0';edi_display ist ein Editfeld, dessen Inhalt ich per Knopfdruck einlesen und dann auf Inhalt und bestimmte Zeichen untersuchen will... Daher das Umwandeln in ein Chararray.
Ich erhalte folgende Fehler:
[C++ Error] Unit1.cpp(1): E2451 Undefined symbol 'string' [C++ Error] Unit1.cpp(1): E2379 Statement missing ; [C++ Error] Unit1.cpp(2): E2451 Undefined symbol 's' [C++ Error] Unit1.cpp(3): E2268 Call to undefined function 'copy' [C++ Warning] Unit1.cpp(5): W8004 'arr' is assigned a value that is never used(Zeilennummern hab ich angepasst für euch)
Gruß
// btw könnte das jemand mal bitte ins BCB Forum schieben, danke
-
versuch's mal mit "std::" vor den betroffenen Namen (und natürlich mußt du die entsprechenden Header auch einbinden).
-
Wenn du mit dem BCB arbeitest, kannst du direkt die Methoden der Klasse 'AnsiString' benutzen (s. BCB-Hilfe).
Du brauchst nicht erst ein char-Array zu erstellen (ist ja schließlich C++, kein C).
Bei AnsiString mußt du nur beachten, daß der Index bei 1 anfängt:AnsiString sText = edi_display->Text; for(int i=1; i<=sText.Length(); i++) { char c = sText[i]; // nun kannst du mit den einzelnen Zeichen machen, was du willst! }
-
ach ne .. hat sich erledigt,
aber wir wandle ich einen Ansistring in einen double um?
AnsiStrToDouble() ?
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
StrToFloat(); gibts vom Borland, allerdings kein StrToDouble();
eventuell reicht das ?!EDIT: es muss reichen
long double StrToFloat (AnsiString S);
laut Hilfe
-
AnsiStrings haben allerdings auch die Funktion ToDouble().