std::string -> System::String
-
Hallo!
Ich möchte einen std::string in einen System::String konvertieren.
... std::auto_ptr< sql::ResultSet > res(stmt->getResultSet()); std::string ts = res->getString("aktivDatum").c_str(); cout << "String: " << ts << endl; System::String^jahr_t = Convert::ToString(ts.c_str()); ...
Alternativ habe ich noch
... std::auto_ptr< sql::ResultSet > res(stmt->getResultSet()); std::string ts = res->getString("aktivDatum").c_str(); // ts=2011-09-09 00:00:00 cout << "String: " << ts << endl; System::String^jahr_t = gcnew String(ts.c_str()); ...
probiert. Jedoch ohne Erfolg, da folgender Fehler kommt:
Unbehandelte Ausnahme: System.FormatException: Die Eingabezeichenfolge hat das f
alsche Format.
bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuff
er& number, NumberFormatInfo info, Boolean parseDecimal)
bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo i
nfo)Die Ausgabe des Strings auf die Konsole ist noch ok und bei der Konvertierung kommt die Ausnahme. Hat jemand eine Idee was ich machen kann?
Gruß
-
Nimm einfach den Konstruktor von String, so müsste es gehen:
char* cstr; std::string str ("text"); cstr = new char [str.size()]; strcpy (cstr, str.c_str()); String^ managed_string = gcnew String(cstr);
-
Fehlt da nicht ein delete cstr? Und warum überhaupt?
-
Schoeniaw(koq) schrieb:
Nimm einfach den Konstruktor von String, so müsste es gehen:
char* cstr; std::string str ("text"); cstr = new char [str.size()]; strcpy (cstr, str.c_str()); String^ managed_string = gcnew String(cstr);
Das bewirkt leider gar nichts und das Problem bleibt das gleiche. Aus irgendwelchen Gründen wird versucht den String als Zahlen zu interpretieren. Aber warum?
-
Warum so kompliziert...
std::string str("Hallo Welt"); String ^strStd = gcnew String(str.c_str());
Siehe auch:
http://www.c-plusplus.net/forum/p1132980Wenn da immer noch nicht das richtige rauskommen solltest, hast Du ein anderes Problem und solltest es mit Debuggen versuchen...
-
Jochen Kalmbach schrieb:
Warum so kompliziert...
std::string str("Hallo Welt"); String ^strStd = gcnew String(str.c_str());
Siehe auch:
http://www.c-plusplus.net/forum/p1132980Wenn da immer noch nicht das richtige rauskommen solltest, hast Du ein anderes Problem und solltest es mit Debuggen versuchen...
kommt doch aufs gleiche raus...
@hjdt: das ist korrekter code, es muss funktionieren. wenn nicht dann hast du ein anderes problem. bei welcher zeile tritt der error auf? bei der initialisierung des system::string?
-
Schoeniaw(koq) schrieb:
kommt doch aufs gleiche raus...
Der Weg ist das Ziel. Und in der Hinsicht ist Jochens Vorschlag definitiv besser.
-
Um das Thema abzuschliessen, es lag am MySQL-Connector und diese Version hatte einen Bug. Vielen Dank für die Hilfe!