[C++] String durchsuchen

Chimmeke

Grünschnabel
Hallo,

ich möchte gerne einen String durchsuchen und dabei prüfen ob dieser ein besonderes Zeichen enthält. Meine Idee war anfangs mit string.find("Zeichen") die Sache zu erledigen, doch das hat nicht funktioniert. Stattdessen wurde der gesamte Text ausgegeben. Mein Code bis jetzt ist dieser:
Code:
fstream css;
string line;

css.open("C:/HtmlManager/styles/styles.css",ios::in);
if (!css)
	cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
else
{
	while(!css.eof())			 // solange Dateiende noch nicht erreicht ist
	{
		getline(css, line);				 // Jede Zeile einlesen
		if (line.find("#"))                             // funktioniert leider nicht
			cout <<line <<'\n';			// ausgeben
	}
}
css.close();
 
Da würde es halt manchmal Sinn machen die Referenz anzuschauen und dadurch zu erkennen, was std::string::find zurückgibt.

Bei einem Fehler wird std::string::npos (was zumindest bei meiner Implementierung -1 ist) zurückgegeben. Wäre ja auch durchaus sinnlos, wenn 0 einen Fehler indizieren würde, schliesslich kann ja dein # auch an 0-ter Stelle im string stehen.
 
Moin,

ich möchte gerne einen String durchsuchen und dabei prüfen ob dieser ein besonderes Zeichen enthält. Meine Idee war anfangs mit string.find("Zeichen") die Sache zu erledigen, doch das hat nicht funktioniert. Stattdessen wurde der gesamte Text ausgegeben.
Mein Code bis jetzt ist dieser:
Code:
fstream css;
string line;

css.open("C:/HtmlManager/styles/styles.css",ios::in);
if (!css)
    cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
else
{
    while(!css.eof())             // solange Dateiende noch nicht erreicht ist
    {
        getline(css, line);                 // Jede Zeile einlesen
        if (line.find("#"))                             // funktioniert leider nicht
            cout <<line <<'\n';            // ausgeben
    }
}
css.close();

ich muss zugeben, dass ich Deine Frage nicht verstehe ... der Code macht doch genau das, was Du beschrieben hast :)
Du prüfst, ob die eingelesene Zeile eine Raute enthält - und wenn JA gibst Du sie aus ...... :confused:

Erkläre mal genau was Du meinst - und poste ggf. mal, was genau Du einliest und was ausgegeben wird !

Gruß
Klaus
 
Alles klar, ich habe mir diese Referenz angeschaut und dann meinen Code auch ein bisschen umgeschrieben. Der Code sieht jetzt so aus und es funktioniert.
Code:
fstream css;
string line;
size_t found;

css.open("C:/HtmlManager/styles/styles.css",ios::in);
if (!css)
	cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
else
{
	while(getline(css, line))					// solange Dateiende noch nicht
	{
		found = line.find("#");
		if(found != string::npos)
			cout <<line <<'\n';				// ausgeben
	}
}
css.close();
 
Zurück