Forum: PC-Programmierung C: In einem String eine (int)Variable hochzählen lassen


von Peter (Gast)


Lesenswert?

Hallo,

habe hier mehrere Dateien mit unfomatiertem Inhalt, den ich fomatieren 
soll. Mit einzelnen Dateien geht das alles einwandfrei, es sind jedoch 
29 Stück. Die Dateinamen lauten: roh1.data bis roh29.data
Unter Basic kann ich Strings einfach "unterbrechen", mit einem + Zeichen 
was anhängen und dann wieder was anhängen. Es soll jedoch unter C 
geschehen.
Wie macht man das am Besten? Strcat von jeweils den Teilstrings?

  for (int i=1; i<30; i++)
  {
    fstream rohdaten, formatiert;
    rohdaten.open("roh" + i +".data", ios::in | ios::binary);
    formatiert.open("formatiert" + i + ".txt", ios::out | ios::binary);
  }

Gruß,

Peter

von Uhu U. (uhu)


Lesenswert?

> Wie macht man das am Besten? Strcat von jeweils den Teilstrings?

Das ist eine Möglichkeit - die primitivste.

Du kannst auch funktionen aus der printf - Familie nehmen. Das ist schon 
deutlich komfortabler.

von Karl H. (kbuchegg)


Lesenswert?

Peter wrote:
> Hallo,
>
> habe hier mehrere Dateien mit unfomatiertem Inhalt, den ich fomatieren
> soll. Mit einzelnen Dateien geht das alles einwandfrei, es sind jedoch
> 29 Stück. Die Dateinamen lauten: roh1.data bis roh29.data
> Unter Basic kann ich Strings einfach "unterbrechen", mit einem + Zeichen
> was anhängen und dann wieder was anhängen. Es soll jedoch unter C
> geschehen.

Warum benutzt du dann C++?

> Wie macht man das am Besten?

Du arbeitest mit C++. Also: Nutze die Macht, Luke, aeh Peter

In C++ gibt es Stringstreams, die sich wie der ganz normalen
Ausgabestream cout verhält, nur dass das Ergebnis in einem
std::string landet. Dort gibst du dann den festen Anteil
deines Filenamens aus, gefolgt von der Schleifenvariable
und der Extension.
Dann holst du dir aus dem String den fertig formatierten Dateinamen
raus.

> Strcat von jeweils den Teilstrings?

Könnte man in C so machen, ist aber umständlich.
Der sprintf ist schon erfunden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der Quelltext ist nicht C, sondern C++. Solche Dinge wie "ios::in" gibt 
es in C nicht.

Da Du C++ verwendest, kannst Du auch die deutlich komfortableren 
C++-String-Funktionen aus std::string verwenden, anstelle mit printf und 
Konsorten zu arbeiten.

von Peter (Gast)


Lesenswert?

Hallo,

danke für die Tipps, nach ein wenig googeln nach den von euch genannten 
"richtigen" Stichwörtern, läuft es nun perfekt.

Danke,

Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.