PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++


Elvin
2002-11-19, 11:50:09
Hey Leute,

ich hoffe es gibt hier jemand der sich mit sowas auskennt. :)

Ich suche einen Platzhalter der für alle Zeichen steht bzw. für genau ein Zeichen. Das ganze noch in C++.
In SQL gibt es den "_" (underscore) aber wie ist das in C++ ???

Im Endeffekt soll das dann irgendwie so funktionieren: ;D

if (StringVariable == "_") /*(der Underscore müsste nur eben durch ein anderes Zeichen ersetzt werden)*/
{
// tu irgendwas
}
else
{
// tu nix
}

Vielen Dank im voraus :D
für eure Grips Anstrengung :)
Elvin

Captain America
2002-11-19, 12:04:44
Regular Expressions

Boah ich konnt kaum den Text lesen wegen deinem Avatar! ;D

Elvin
2002-11-19, 12:34:29
Aber, zu meinem Prob kannste nix sagen ???

Schade :(

Captain America
2002-11-19, 13:07:11
Originally posted by Elvin
Aber, zu meinem Prob kannste nix sagen ???

Schade :(

Doch doch, was du suchst nennt sich "Regular Expressions". Ein Tutorial dazu findet sich zum Beispiel auf www.devshed.com - allerdings im Zusammenhang mit PHP, wenn ich mich recht errinere.

Such mal in Google nach "Regular Expressions C++ Library" oder so, das sollte was zu Tage bringen. Da ich nicht in C++ Programmiere, kann ich dir leider keinen genaueneren Tipp geben.

MeLLe
2002-11-19, 20:13:10
Wie schauts damit (s.u.) aus?

if (strlen(StringVar)!= 0)
{
blah(1,2,blub);
}
Funktion "blah()" wird dann nur ausgeführt, wenn der String irgendeinen Wert enthält. Sollte ja Sinn und Zweck der Sache sein, oder?

Elemental
2002-11-19, 22:23:37
Was genau hast du denn vor?

Willst du wissen ob StringVariable einen bestimmten Wert hat, z.B. :

if( StringVariable == _T("X") )
{
;
}


Oder willst du wissen StringVariable ein (alphanumerisches)Zeichen ist:
isalphanumeric(StringVariable);


Oder was ganz anderes?

mfG
Elemental

GloomY
2002-11-20, 00:39:13
So wie ich das Problem verstehe, will Elvin schauen, ob der String die Länge eins hat und damit ist das Problem durch Melle schon gelöst worden.

Hmm, ein String ist in C++ doch ein Objekt, oder?

Ansonsten hätte ich folgende C-Lösung vorzuschlagen, die folgende Eigenschaft ausnutzt: In C sind alle Strings Nullterminiert.
Also hat ein String mit der Länge eins zwei Zeichen, das eine und dann noch das '\0'. Daher wäre das auch eine Möglichkeit:


char *string;

if (string+1) {
/* String hat Länge != 1 */
} else {
/* String hat Länge 1 */
}
edit: Elvin, wer ist die Dame? ;)

zeckensack
2002-11-20, 01:08:21
Originally posted by GloomY
So wie ich das Problem verstehe, will Elvin schauen, ob der String die Länge eins hat und damit ist das Problem durch Melle schon gelöst worden.

Hmm, ein String ist in C++ doch ein Objekt, oder?

Ansonsten hätte ich folgende C-Lösung vorzuschlagen, die folgende Eigenschaft ausnutzt: In C sind alle Strings Nullterminiert.
Also hat ein String mit der Länge eins zwei Zeichen, das eine und dann noch das '\0'. Daher wäre das auch eine Möglichkeit:


char *string;

if (string+1) {
/* String hat Länge != 1 */
} else {
/* String hat Länge 1 */
}
edit: Elvin, wer ist die Dame? ;) Aaarrrrrrgh! :bäh:

Wenn schon, dann bitte entwederif (*(string+1))oderif (string[1])

Xmas
2002-11-20, 05:16:01
Und selbst dann funktioniert es nicht, da string[0] ja ebenfalls '\0' sein kann ;)

zeckensack
2002-11-20, 05:56:31
Stimmt :|

Also doch strlen(string)==1

Elvin
2002-11-20, 11:39:00
Es freut mich sehr das ihr euch darüber so auslasst. :D

Aber eigentlich war mein Problem inzwischen ein ganz anderes. Ich hab es aber nun gelöst. Ich hatte erst gedacht ich kann es so lösen aber dem war nicht so.
Es ist nämlich so:

Ich hab zwei Tabellen, in der einen steht der Urlaubsanspruch für jeden Mitarbeiter unterteilt in verschieden Arten. In der anderen Tabelle stehen wie viele Urlaubstage jeder Mitarbeiter genommen hat.
Jetzt habe ich mit einem Select die Resturlaubstage ermittelt.
Etwa so:

SELECT PersNr, Name, Anspruch - genommenerUrlaub AS Resturlaub
FROM
[SELECT PersNr, ...., Summe von Anspruch
FROM tabelle .......
WHERE ...........
GROUP BY .........] AS Anspruch,

[SELECT PersNr, ..., Summe von genommenerUrlaub
FROM tabelle .......
WHERE ...........
GROUP BY .........] AS genommenerUrlaub

WHERE PersNr = PersNr usw............AND Resturlaub >= :Zahl

Jedenfalls alles wunderbar er hat mir die Resturlaubstage alle korrekt angezeigt.
Nur das letzte AND in der WHERE Klausel haute nämlich nicht richtig hin.
Normal sollte er nur die Resturlaubstage anzeigen die >= der eingegebenen Zahl sind.
Wenn ich aber z.B. 5 eingegeben hab hat er alle ab 50 angezeigt (nur bei 05 hat er es richtig gemacht, deswegen wolte ich wissen wie ich erkenn wenn es eine Zahl ist damit ich ne 0 vorhängen kann) und wenn ich 30 oder so angegeben hab hat er die mit 100 weggelassen. ???
Konntet ihr mir alle folgen :D
Wenn nicht, auch nicht schlimm ich habs ja jetzt anders gelöst.
Wer sich mit dem C++ Builder auskennt man kann auf die Query (mit denen ich das SQL absetze) einen Filter setzen. Der ist anscheinend effektiver.

Also vielen Dank nochmal an alle :D
Elvin

P.S. Falls jemand noch Fragen hat oder es genauer wissen will PM an mich.

GloomY
2002-11-20, 13:44:07
Originally posted by zeckensack
Aaarrrrrrgh! :bäh:

Wenn schon, dann bitte entwederif (*(string+1))oderif (string[1]) Ja, natürlich...:bonk:

*schäm*

Binaermensch
2002-11-24, 17:53:39
eine frage blieb noch unbeantwortet:
wie heißt die dame in deinem avatar-bildchen? :D

Elvin
2002-11-26, 20:38:26
Och :P
Das ist nur meine Mutter. ;D ;D ;D
:nono:

Vedek Bareil
2002-11-28, 01:34:07
Originally posted by GloomY Hmm, ein String ist in C++ doch ein Objekt, oder? nein, eigentlich nicht. Ein Objekt ist eine Instanz einer Klasse. Eine Klasse ist ein strukturierter Datentyp, der Eigenschaften (Variablen) und Methoden (Funktionen/Prozeduren) besitzt, welche dann auch jede Instanz der Klasse, also jedes Objekt, hat. Ein String jedoch besitzt weder Eigenschaften noch Methoden, er kann allerdings selbst eine Eigenschaft eines Objektes sein.

Beispiel: es sei eine Klasse 3DCenter_ForumsUser definiert, die u.a. die Eigenschaft 3DCenter_ForumsUser.Name besitzt, welche eine Variable des Typs string ist. Sei nun User1 eine Instanz der Klasse, dann kann die Eigenschaft User1.Name des Objektes User1 z.B. der string "GloomY" sein ;)

Falls ich jetzt Blödsinn erzählt haben sollte, bitte meckern :D

[EF]peppa
2002-11-28, 01:45:49
Originally posted by Elvin
Och :P
Das ist nur meine Mutter. ;D
:nono:

hast du das bild deine "mutter" auch groesser? vielleicht kann ich da irgendwo einen namen entdecken. :D

GloomY
2002-11-28, 02:39:49
Originally posted by Vedek Bareil
nein, eigentlich nicht. Ein Objekt ist eine Instanz einer Klasse. Eine Klasse ist ein strukturierter Datentyp, der Eigenschaften (Variablen) und Methoden (Funktionen/Prozeduren) besitzt, welche dann auch jede Instanz der Klasse, also jedes Objekt, hat. Ein String jedoch besitzt weder Eigenschaften noch Methoden, er kann allerdings selbst eine Eigenschaft eines Objektes sein.

Beispiel: es sei eine Klasse 3DCenter_ForumsUser definiert, die u.a. die Eigenschaft 3DCenter_ForumsUser.Name besitzt, welche eine Variable des Typs string ist. Sei nun User1 eine Instanz der Klasse, dann kann die Eigenschaft User1.Name des Objektes User1 z.B. der string "GloomY" sein ;)

Falls ich jetzt Blödsinn erzählt haben sollte, bitte meckern :D Ok, dann hab' ich das mal wieder mit Java verwechselt. :bonk:

Da sind Strings nämlich Objekte...

zeckensack
2002-11-28, 12:22:05
Originally posted by Vedek Bareil
nein, eigentlich nicht. Ein Objekt ist eine Instanz einer Klasse. Eine Klasse ist ein strukturierter Datentyp, der Eigenschaften (Variablen) und Methoden (Funktionen/Prozeduren) besitzt, welche dann auch jede Instanz der Klasse, also jedes Objekt, hat. Ein String jedoch besitzt weder Eigenschaften noch Methoden, er kann allerdings selbst eine Eigenschaft eines Objektes sein.

Beispiel: es sei eine Klasse 3DCenter_ForumsUser definiert, die u.a. die Eigenschaft 3DCenter_ForumsUser.Name besitzt, welche eine Variable des Typs string ist. Sei nun User1 eine Instanz der Klasse, dann kann die Eigenschaft User1.Name des Objektes User1 z.B. der string "GloomY" sein ;)

Falls ich jetzt Blödsinn erzählt haben sollte, bitte meckern :D Mecker! :grhargh:

c_like_string char[] ist natürlich keine KLasse.

std::string sehr wohl. :P

;)