Zeichen zwischen String setzten->egal wie lang

Gast #2186350
Lesenswert?

Hallo Forenmitglieder,

Ich habe eine Frage an euch und bräuchte dabei Hilfe:
Ich möchte mit C++ 2008 eine Formsanwendung, welche einen Text einliest, 
umformt und ausgibt.
Das Bild zeigt wie weit ich schon bin :-)

Beispiel:
Eingabe = Hallo Welt, schön hier!
Ausgabe (SOLL) = ['H','a','l','l usw........] auch das Leerzeichen :-)

Soweit habe ich es geschafft, bin aber nun am Enden mit meinem Latein, 
denke es ist aber kein großer Schritt mehr..oder?

***CODE****************
 private void formatieren(object sender, EventArgs e)
        {
            string eingabe = textBox1.Text;     //einlesen der Textbox1 
= Eingabefenster

            string eingabeform = eingabe.Substring(0, 1) + "','" + 
eingabe.Substring(1, 1) + "','" + eingabe.Substring(2, 1) + "','" + 
eingabe.Substring(3, 1) + "','" + eingabe.Substring(4, 1) + "',0}";


            textBox2.Text = eingabeform;            //Text von Textbox1 
ausgeben, ohne Formatänderung
}
**********************
Würde gerne Texte bis zu, ich sag mal 80 Zeichen, so umformen.

Danke für jede Hilfe!!
Angehängte Dateien:
Gast #2186410
Lesenswert?

Stringer schrieb:
> C++ 2008
Das Gefriemel sieht er nach C# und Konsorten aus, irre ich mich?

> Soweit habe ich es geschafft, bin aber nun am Enden mit meinem Latein,
> denke es ist aber kein großer Schritt mehr..oder?
Doch, ein ganz Großer. Programmieranfänger? Merkt man (nicht übel 
nehmen). Du solltest ein gutes Buch zum Thema kaufen und durcharbeiten, 
im konkreten Fall heißt das Zauberwort "Schleife".

Da mir gerade langweilig war eine Q&D-Lösung in reinem C, 
Sicherheitsmaßnahmen gegen Bereichsüberschreitungen usw. musst du selber 
einbauen. Scheint zu funktionieren, trotzdem ohne Gewähr und Garantie.
1
#define MAX_IN 80
2
#define MAX_OUT (MAX_IN*4+2) //keine Ahnung obs passt, hab gerade keine Lust nachzudenken
3
int main(void)
4
  char in[MAX_IN+1]="testabc123 Leerzeichen";
5
  char out[MAX_OUT+1];
6
  uint8_t i;
7

8
  strncpy(out,"{'",3);
9
  for(i=0;i<strlen(in);i++)
10
  {
11
    strncat(out,in+i,1);
12
    if(i!=strlen(in)-1)
13
      strncat(out,"','",4);
14
  }
15
  strncat(out,"'}",3);
16
  printf("%s\n",out);
17
  getch();
18
  return 0;
19
}
#2186413
Lesenswert?

Stringer schrieb:
> hm.. auf ein "Ohje.." wollte ich nicht hinaus :-(
> Hab ich was falsch gemacht/angefangen? Bin ich auf einem falschen Weg
> für mein Ergebnis?

Das Ohje bezog sich wahrscheinlich auf deine Kentnisse


> Würde gerne Texte bis zu, ich sag mal 80 Zeichen, so umformen.

Du kannst natürlich dieses SChema genau so weitertreiben (solltest dir 
aber überlegen, wie du es hinkriegst, dass auch nur tatsächlich benutzte 
Zeichen aus dem Eingabestring kommen, oder du kannst beobachten, dass 
sich dein Ergebnis mit etwas umformatieren so zusammensetzt

     string eingabeform = eingabe.Substring(0, 1) + "','" +
                          eingabe.Substring(1, 1) + "','" +
                          eingabe.Substring(2, 1) + "','" +
                          eingabe.Substring(3, 1) + "','" +
                          eingabe.Substring(4, 1) + "',0}";

und da nach einem Schema suchen.
Das einzige was sich (in erster Näherung) ändert ist die erste Zahl beim 
Substring. Und diese Zahl läuft von 0 weg bis hoch zu der Anzahl der 
Zeichen im eingabe String. Wenn das mal nicht ein deutlicher Hinweis für 
den Einsatz einer for-Schleife ist :-)
Gast #2186983
Lesenswert?

erstmal danke für die Antworten:-)

Karl Heinz Buchegger schrieb:
> und da nach einem Schema suchen.
> Das einzige was sich (in erster Näherung) ändert ist die erste Zahl beim
> Substring. Und diese Zahl läuft von 0 weg bis hoch zu der Anzahl der
> Zeichen im eingabe String. Wenn das mal nicht ein deutlicher Hinweis für
> den Einsatz einer for-Schleife ist :-)

Ja soweit habe ich das nun verstanden. Ich nehme also anstatt der festen 
Zahlen, den Wert der Stringlänge. Und mache das ganze so oft, wie der 
eingelesene String lang ist ?!
************
string eingabe = textBox1.Text;
            int l = eingabe.Length;
            for (int i = 0; i < l ; i++)
            {
                string eingabeform = eingabe.Substring(l, 1) + "','";
            }
***********
jetzt fehlt mir wie ich das nun zusammensetzte am Ende.... wenn ich 
"eingabeform" ausgeben möchte, sagt er dass es nicht geht, da es nicht 
im aktuellen Kontext verwendet wird?? Weil es in der for-Schleife ist???
Persönliche Seite #2187032
Lesenswert?

Nur mal am Rande bemerkt:

C und C++ können Strings (nicht anderes sind char-Arrays) auch direkt 
mit Stringkonstanten initialisieren.

Ob man nun
1
char text[] = { 'H', 'a', 'l', 'l', 'o', 0 };

oder
1
char text[] = "Hallo";

schreibt, ist egal, das Ergebnis ist dasselbe. Besser lesen aber kann 
man eindeutig die zweite Variante.

Daher erscheint mir der Aufwand, aus einer Zeichenkette obige 
Darstellungsform zu erzeugen, recht ... sinnarm.

Was ist der Hintergrund des ganzen, wofür soll das gut sein?
Gast #2187308
Lesenswert?

Hi,
danke ihr habt mir mit euren Anregungen sehr geholfen.
Ich habe es hinbekommen und möchte hier natürlich meine Lösung auch 
präsentieren, damit auch andere etwas davon haben:

**********
for (int i = 1; i < l; i++)
                {

                    eingabeform = eingabe.Insert(i, "','");
                    eingabe = eingabeform;
                    l = l + 3;
                    i = i + 3;
                }
****************

So wird aus Hallo -> H','a','l','l','o

Bestimmt kein sauberer Stil wie ich es programmiert habe, aber es 
erfüllt seinen Zweck :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren