String in ein Array umwandeln?
-
Hallo ich lese eine Textdatei folgendermaßen ein:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ fileName = "hallo.txt"; FileStream^ fs = nullptr; StreamReader^ sr = nullptr; try { fs = gcnew FileStream(fileName, FileMode::Open); sr = gcnew StreamReader(fs); while(sr->Peek() != -1) { test1->Text = test1->Text + sr->ReadLine(); } } catch(Exception^ e) { MessageBox::Show("Fehler beim Lesen der Datei!\r\n\r\n" + e->Message, "Benutzer-Info", MessageBoxButtons::OK,MessageBoxIcon::Exclamation); } finally { if(sr) sr->Close(); } }
in der Textdatei steht: "hallo; 32; 32; 42; 24;"
Dies wird in der Textbox "test1" auch so angezeigt.
Ich habe noch 5 andere Textboxen und wenn ich auf "Start" klicke, soll "test1" durch ; getrennt werden und die werte in die boxen verschoben werden also textbox1 ist hallo, textbox2 ist 32 usw.
Ich habe den Inhalt der Textbox ausgelesen und in einen String gespeichert:
datei = Convert::ToString(test1->Text);Jetzt will ich den String "datei" in ein Feld der Größe 5 schreiben und die Textboxen sollen sich dann die Werte vom Feld holen.
Wie kann ich also einen String bei ";" trennen und die Werte in ein Array schreiben?
-
Mit einer Schleife
Wieso willst du einen Array benutzen? Nimm doch einen Vektor vom Typen String.
std::vector<string> vektor; // braucht #include <vector> string element; for(int i=0; i<datei.length(); ++i) { if(datei[i]==";") { vektor.push_back(element); element.clear(); else { element.push_back(datei[i]); } }
Damit sind die Werte als unter vektor[0]...vektor[4] verfügbar.
-
Benutze
System::String::Split(...)
. Vom Code von bruhial würde ich absehen, da es sich dabei um C++ (ISO) handelt. Dein Code ist allerdings C++/CLI. Diese Sprache wurde zwar genau (und eeigentlich nur) dafür gemacht nativen- mit .NET Code zu verbinden, bietet aber sehr viel Fallstricke - vorallem für Anfänger. Kurz, es ist keine gute Idee, damit Programmieren lernen zu wollen.
-
theta schrieb:
Dein Code ist allerdings C++/CLI.
Das habe ich wohl übersehen.