char nach const char* konvertieren
-
Hallo Leute!
Ich hab´ folgendes Problem. Ich möchte gerne einen char mit m_list.InsertString(0, einchar); in eine Liste einfügen. Das geht aber nicht, weil der Compiler dann meckert. Er kann keinen "char" in einen "const char*" konvertieren.
Wie funktioniert denn sowas?`Grüße, Ingo.
-
das geht so
char mystring[2]; char einchar='a'; mystring[0]=einchar; mystring[1]=0; //0-Terminierung nicht vergessen! m_list.InsertString(0,mystring);
-
Du kannst keinen char in const char* casten, wenn der const char* ein nullterminierter String sein soll (was fast immer der Fall ist).
Konvertieren geht z.B. so:
char c; // Irgendwas mit c machen const char[] a = { c, '\0' }; // a kann implizit nach const char* konvertiert werden
Übrigens:
Was ist m_list? Was ist InsertString? Warum nimmst du nicht die STL?p.s.:
Und wieder doppelt gemoppelt.
-
Vielen Dank!
Ich Trottel bin natürlich im falschen Bereich gelandet. Sorry! Das nächste Mal dann wieder im Visual C++ - Forum.PS.: Mit .InsertString(...) kann ich einen String in eine CListBox einfügen.
Grüße, Ingo.
-
Kann man sehen wie man will. Im Prinzip handelte es sich um ein Standard-C++ Problem und dann auch wieder nicht wegen InsertString. Im Zweifelsfall würde ich es nach MFC posten.
-
es handelt sich um ein Standardproblem. Nur weil jemand CList verwendet (warum auch immer), muss man es ja nicht im MFC Forum posten. Die Frage bezieht sich ja nicht auf die Implementation von CList oder das Interface.
-
In C++ würde man kein Interface programmieren, dass const char* entgegennimmt, solange das Interface nur von C++ aus
ansprechbar sein muss.Aber ein Standard-Problem ist das hier trotzdem.
-
cd9000 schrieb:
In C++ würde man kein Interface programmieren, dass const char* entgegennimmt, solange das Interface nur von C++ aus
ansprechbar sein muss.Huch? Warum denn das nicht? Wozu müssen Funktionen à la ifstream::open unbedingt ein std::string entgegennehmen? Dir ist schon klar, dass aus jedem "Pup" dann erstmal ein temporäres std::string-Objekt wird, welches nach verdammt kurzer Lebensdauer dann wieder zerstört werden muss.
Ne. Also solange ich den string innerhalb meiner Funktion/Klasse nicht weiter brauche, sehe ich keinen Grund dafür gleich die std::string Kanone rauszuholen.
-
Nagut, man kann die Aussage nicht verallgemeinern.
Ich meinte das bezogen auf ein Szenario wie CListBox. Eine ListBox mit einem vector<string> ist besser als eine mit einem vector<char*>.