Länge des Strings und Teilstrings auslesen(C++)

moin


So läuft es:
Code:
#include <string>
#include <sstream>
#include <iostream>

int main( )
{
	using namespace std;
	// string str1 ("Das ist ein Test");
	string sName;
	basic_string <char> cB;
	int i, iBst[256];
	cout << "Stringeingabe:" << endl;
	getline (cin, sName);

	cout << sName << endl;

	//size_t laenge = sName.length();
	int iLaenge = (int)sName.length();
	cout << "Hier die laenge: \n" << iLaenge << endl << endl;

	for (i=1;i<iLaenge;i++)
	{
		cB = sName.substr ( i , 1 );
		char iA = (char)cB.c_str();
		iBst[iA] = iBst[iA] + 1;
	}

	for (i=1;i<256;i++)
	{
		if (iBst[i]>0)
		{
			cout << (char)i << ": \t" << iBst[i] << endl << endl;
		}
	}

	system("PAUSE");
	return EXIT_SUCCESS;
}


mfg
umbrasaxum
 
also gut es funktioniert so jedoch hab ich ein weiteres problem wie kann ich jetzt alle Buschtaben in klein buchstaben umwandeln?

und wie kann ich alle leer zeich aus filtern?

also z.B.
String: Hallo das ist ein Test

soll rauskommen:
hallodasisteintest
 
moin


So z.B.:
Code:
	string text;

	text = "Hallo das ist ein Test.";

	//Alle Buchstaben klein machen
	for(int i=0; i < text.length(); i++)
	{
		if(text[i] >= 'A' && text[i] <= 'Z')
			text[i] += 32;
	}


mfg
umbrasaxum
 
Es ginge auch so:
Code:
  	string text;
   	text = "Hallo das ist ein Test.";
   	//Alle Buchstaben klein machen
   	for(int i=0; i < text.length(); i++)
   	{
   		text[i] = tolower(text[i]);
   	}
Allerdings wird tolower intern auch nichts anderes machen, denke ich.
 
Ändere
Code:
char iA = (char)cB;

in
Code:
char iA = sName[i];


edit: oh toll,

tolower macht das für alle normalen Buchstaben, aber es kann mehr! tolower geht auch auf Fremdsprachen ein, sprich Umlaute. Daher ist +32 zwar witzisch, aber nicht so dolle.
 
Zurück