Einen String auf ein Bestimtes Zeichen Prüfen

Twistingstone

Grünschnabel
Guten Tag
Ich habe ein Problem ich will einen String auf ein Bestimmtes Zeichen prüfen
komme aber absolut nich daruf wie ich es anstllen soll. :(
Ich poste hier mal ein Quellcode ausschnitt damit ihr mich vielecht besser versteht.
Code:
if (m_dAus == "")
	{
		m_dAus +="0.";
		m_strAusgabe = m_dAus;
		SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
	}

	else
	{
		if (m_dAus == ".") // Hier soll der String nach einem . durch sucht werden 
		{
			m_dAus +="";
			m_strAusgabe = m_dAus;
			SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
		}
		else
		{
			m_dAus +=".";
			m_strAusgabe = m_dAus;
			SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
		}
	}

MFG

Twistingstone
 
Normalerweise findest du das erste Vorkommen eines Zeichens(z.B.=) im String str durch str.Find('='). das Ganze gibt dir den Integer-Wert der Position zurück.

Schau am besten mal hier: MSDN Library
 
Hmm klingt schon mal gut.
Nun hab ich noch eine frage was giebt mir str.Find zurück wenn das zeichen nicht gefunden
wurde ? (ich komm mit der MSDN Library nocht nicht ganz klar )
Auf jeden fall schon mal danke für die schenlle antwort

MFG

Twistingstone
 
Hat sich grade erledicht Google hat mir die antwort gelifert.
Habe es jetzt so gelöst :
Code:
if (m_dAus == "")
	{
		m_dAus +="0.";
		m_strAusgabe = m_dAus;
		SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
	}

	else
	{
		int puefe = m_dAus.Find(".");
		if (puefe != -1)
		{
			m_dAus +="";
			m_strAusgabe = m_dAus;
			SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
		}
		else
		{
			m_dAus +=".";
			m_strAusgabe = m_dAus;
			SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
		}
	}

Fals ihr hier zu noch verbesserungs vorschläge habt sagt sie mir bin für fast alles offen.

MFG

Twistingstone
 
moin


Benutze das nächste mal gleich diesen Link: http://msdn.microsoft.com
das findest du alle Befehle und genaue Erklärungen dazu.


Zu deinem Codeschnippsel.

Code:
if (m_dAus == "")
{
m_dAus +="0.";
m_strAusgabe = m_dAus;
SetDlgItemText (IDC_AUSGABE , m_strAusgabe);
}

Wenn du eh erst feststellst das m_dAus leer ist, dann musst du "0." doch nciht erst in m_dAus kopieren und dann m_dAus in m_strAusgabe.
Pack doch gleich "0." in m_strAusgabe. Das spart aufjedenfall Zeit.

Code:
m_dAus +="";
Das verstehe ich nciht, du fügst zu m_dAus KEIN Zeichen hinzu, warum dann dieser Aufruf?



mfg
umbrasaxum
 
Hallo ich bin neu auf diesem Board und auch ein Anfänger was C++ angeht.

Ich habe von meinem Informatik Lehrer den Auftrag bekommen über die Ferien ein Textanalyse Programm zu schreiben, was die Wörter in einem eingegebenen Text zählt. Dabei bin ich auf das Problem gestoßen das Wörter nicht immer nur durch Leerzeichen getrennt werden, sondern Auch mal durch ein Newlinezeichen.

Meine Frage is jetzt wie kann ich, in einem mehrzeiligen String, nach nach Newlinezeichen suchen?

Das ist meine bis herige Funktion:

Code:
int wz(string text)
{
	int i=0, schnitt=0;
	while(zz(text)!=-1)
	{
		if( (text.rfind('Newlinezeichen')!=zz(text)) && (text.rfind(' ')!=zz(text)) )
			i++;
		if(text.rfind('Newlinezeichen')>text.rfind(' '))
		    schnitt=1;
		else
		    schnitt=2;
		switch(schnitt)
		{
			case 1:
			{
				text.erase(text.rfind('Newlinezeichen'));
				break;
			}
			case 2:
			{
				text.erase(text.rfind(' '));
				break;
			}
		}
	}
	return (i);
}

Ich wess eben einfach nicht was ich eintragen muss um nach einem Newlinezeichen zu suchen, oder geht das so gar nicht ?

Naja schon mal danke für eure Hilfe ! :-)

PS.: Ich ver wende den Microspft Visual C++ Compiler unter Windows und das Programm soll ein Konsolen Programm werden.

THX :confused:
 
Zuletzt bearbeitet:
Wenn ich das teste stürtzt das Programm aus nicht genannten Gründen ab:

"abnormal program termination"

aber danke für die schnelle hilfe!

Ich muss dazu sagen das ich mit dem Debuger nich umgehen kann sonst würde mir das vielleicht helfen.

Naja wenn euch sonst noch was einfällt dann postet bitte bitte bitte !

Danke
 
Zurück