Zum Inhalt springen

Ist Inhalt von CString alphanummerisch oder nummerisch ...


Empfohlene Beiträge

Geschrieben

Servus,

ich möchte überprüfen ob der Inhalt eines CStrings nur Ziffern enthält oder auch

auch andere Zeiche enthalten sind.

Bisher prüfe ich jedes Zeichen in dem String, ich frage mich aber ob es keine

schnellere bzw. kürzere und einfachere Methode gibt.

Was am ende dabei herauskommen soll wäre ist:

bool isStringNummeric(CString);

wie gesagt, ich habe eine Lösung, aber es kann ja sein das jemand das

ganze schon einmal kurz gelöst hat.

TinTin

Geschrieben

Bisher prüfe ich jedes Zeichen in dem String, ich frage mich aber ob es keine

schnellere bzw. kürzere und einfachere Methode gibt.

Was soll an deiner Methode kompliziert sein?

Ich wuerde nun auch ueber den String iterieren und per isdigit() jedes Zeichen pruefen.

Goos

Geschrieben

hab grade mal was gemacht:

bool isStringNumeric(CString csStr)

{

	int j = csStr.GetLength() ;

	int l = -1;

	bool bRet = true;

	if (j > 0)

	{

		for (int k=0;k<j;k++)

		{

			char chr = csStr.GetAt(k);

			l = isdigit(chr);

			if (l == 0)

			{	

				bRet = false;

			}

		}

	}

	else

	{

		bRet = false;

	}

	return bRet;

}

Geschrieben

Kurz Zwischenfrage an Klotzkopp:

int j = csStr.GetLength();

for( int i = 0; i < j; ++i )

Sollte das nicht am Ende abstürzen, da i == csStr.GetLength()? :confused:

Geschrieben

Sorry, war ein Denkfehler...

@Guybrush Threepwood: Nun ++i erhöht ja um eins bevor es verwendet wird.

War ein kleines Verständnisproblem...:floet:

Geschrieben
Nun ++i erhöht ja um eins bevor es verwendet wird.

War ein kleines Verständnisproblem...:floet:

Klingt in dem Fall nach einem kleinen Verstaendnisproblem :)

Goos

Geschrieben
Nun ++i erhöht ja um eins bevor es verwendet wird.

Mit i++ würde es auch funktionieren. Der Wert dieses Ausdrucks ist in diesem Fall der einzige Unterschied zwischen i++ und ++i, und der wird hier nicht benutzt.
Geschrieben
Warum so umständlich?

Stimmt, warum so umständlich. Der String ist ja schon nicht mehr nummerisch

wenn isdigit() einmal false ist.

naja, war ja nur ein erster versuch, bevor das mit dem isdigit kam war die

Funktion noch schlimmer...aber vergesen wir das, heute war sowieso nicht mein

Tag -> anderer Thread mit dem Debugger.

EDIT:

csStr.GetLenght() < 1 sollte meiner meinung nach schon abgefangen werden, sonnst

ist bei einem leeren String der Returnwert dennoch true und das stimmt ja nun nicht.

Geschrieben

csStr.GetLenght() < 1 sollte meiner meinung nach schon abgefangen werden, sonnst

ist bei einem leeren String der Returnwert dennoch true und das stimmt ja nun nicht.

Stimmt, da ist was dran.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...