strings

Irgendjemand_1

Erfahrenes Mitglied
Hallo.
Bin ein ziemlicher Anfänger in C++, weiß nur leider nicht, wie man Strings benutzt.

Jemand hat gemeint so:
#include <string.h>
und dann (logisch) string var;

Funktioniert aber irgendwie nicht?

Und wie ist der Verkettungsoperator, damit ich einfach weitere Werte an den String anhängen kann? In PHP ist das z.B .=
also
stringname .= "irgendwas";
stringname .= "test";
ergibt:
irgendwastest

Thx schonmal.
Brauch das, weil ich was, dass ich in PHP geschrieben habe in C++ umsetzen möchte.
 
Nicht string.h includen, sonder nur string:

#include <string>

Die string-Klasse befindet sich im Namespace std und kann so angesprochen werden:

std::string stringname;

stringname = "irgendwas";
stringname += "test";
 
Danke, klappt :)

Weiteres Problem. Warum kann ich keinen string mit Bedienungen in ein if setzen?
Die bediengungen werden eben in einer Schleife erzeugt.
So:
bediengung += "(zahl % number_system) == j";
for (y = 1; y <= number_system; y++) {
bediengung += " || (zahl % (number_system-y)) == j";
}

Problem: geht nicht, weil er einen bool Wert im if erwartet.
In PHP zum Beispiel ging das auch einwandfrei ... ;)

Mir fällt grad keine Alternative ein .. Jemand anders vielleicht?
 
Hallo,
benutze doch bitte die Codetags in Zukunft...
zu deinem Problem:
C/C++ ist im Gegensatz zu PHP wie du schon richtig festgestellt hast eine Typsichere Programmiersprache,
deswegen wird das so nicht gehen...
Du hast 2 Möglichkeiten:
Du baust den String in der von dir angegebenen Weise auf. Schickst Ihn durch einen Parser (den du dir
höchstvermutlich selber bauen musst) und berechnest dann den ausdruck,
oder du überlegst dir eine andere Variante...


Gruß

RedWing
 
Wie kommt man eigentlich auf die Idee, sowas in einen String zu packen? Mach es doch einfach so:
Code:
bool fBedingung = false; // aussagekräftigerer Variablenname wäre hier besser

for (int i = 0; i <= number_system; i++) {
    fBedingung = fBedingung || ((zahl % (number_system - i)) == j);
}

Oder noch besser:
Code:
bool fBedingung = false;

for (int i = 0; i <= number_system; i++) {
    if ((zahl % (number_system - i)) == j) {
        fBedingung = true;
        break;
    }
}
 
Nein.
Ich brauch nicht nur 1e Bediengung, sondern so viele, bis die Schleife zuende ist.
Wenn sie jetzt z.B 3 mal durchläuft, habe ich das:

(zahl % number_system) == j || (zahl % (number_system-1)) == j || (zahl % (number_system-2)) == j || (zahl % (number_system-3)) == j

Wobei j dann eine Variable ist, die ich später brauche.
Wie gesagt, so hat das in PHP funktioniert, aber kann auch sein, dass das in C++ nicht funktionieren kann.

Oder kann ich eine Schleife IN der if Bediengung reinsetzen?
 
Ich glaube, du hast meinen Code nicht ganz verstanden. Er macht genau das, was du vermutlich erreichen willst.

Trotzdem wäre es nicht schlecht, wenn du uns mal erläutern würdest, was du eigentlich im Großen und Ganzen vor hast.

In C++ kann ein Ansatz wie deiner nicht funktionieren, da es sich wie schon gesagt nicht um eine interpretierte Sprache handelt.


nicht ohne größeren Aufwand zu betreiben
 
Irgendjemand_1 hat gesagt.:
Dein Code überschreibt den Wert immer?
Ja.

Code:
bool fBedingung = false;

fBedingung = fBool1 || fBool2 || fBool3 || fBool4;
// …ist identisch mit:
fBedingung = fBedingung || fBool1;
fBedingung = fBedingung || fBool2;
fBedingung = fBedingung || fBool3;
fBedingung = fBedingung || fBool4;
Alles klar?
 
Meinst du dann, dass ich die if-Abfrage in die Schleife schreiben soll?
Das wär nicht gut, da ich dann andere Schleifen unnötig oft durchlaufen müsste.

Sonst hab ich ja immer nur den letzten Wert von fBediengung, dass hilft mir ja auch nicht viel.

Aber so wichtig ist das ja gar nicht ... ;)
 
Zurück