[c++] String-Inhalt prüfen

schiieech

Mitglied
Hallo!

Ich hab mal ein kurzes Anliegen in c++:
Ich habe einen String mit variabler Länge, welcher nur aus Zahlen besteht. Ich möchte jetzt gern in einer Schleife jede einzelne Stelle des Strings auswerten, in dem ich die erste Stelle mit 3 multipliziere, die zweite Stelle mit 1, die dritte Stelle wieder mit 3, die vierte wieder mit 1 und immer so abwechselnd weiter.

Wie kann ich das am besten bewerkstelligen? Vielleicht hat jemand ein kurzes Code-Beispiel für mich?

Würde mich sehr über Hilfe freuen!

Danke,
schiieech
 
Na? Mal wieder die Hausaufgaben nicht gemacht? ;)
Hier nur schnell in C umrissen:

PHP:
char* cString;
char* ptr;
const char* letters="132643079";
int size=strlen(letters)+1;
int stelle=0;

cString=(char *)realloc(cString,sizeof(char)*size));

strcpy(cString,letters);

ptr=cString;
//multiplizieren
do{
   if((stelle++) % 2)==0)
     if(*ptr<=3)//ziffern groeßer 3 koennen nicht mit 3 multipliziert werden
       *ptr=(*ptr) * 3;
}while (*(++ptr)!=EOL);
 
So in C++, erklärt sich von alleine, oder (siehe oben)?
Achja die 48 vielleicht nicht. Das liegt daran, dass ich einfach den int-Wert
von einem char einlese und da die 0 nunmall den wert 48 ASCII hat,
muss ich 48 dekrementieren bzw inkrementieren.

Code:
std::string strTest="1234567890";

for(int i=0;i<(int)strTest.length();i++)
{
   int iTmp = strTest[i]-48;
   if (((i % 2)==0) && (iTmp<=3)) 
   {
        iTmp*=3;
       strTest[i]=iTmp+48;
   }
}
 
Zuletzt bearbeitet:
Wegen der 48:
Möglich wäre auch
Code:
int iTmp = strTest[i]-'0';
Führt aber in beiden Versionen zu einer Warnung wg. Typumwandlung.
 
Code:
#include <iostream>
#include <string>

using namespace std;

int main()
{	
	string sDig = "123144325435";
	const int iMul[2] = { 3, 1 };

	for( int i = 0; i < sDig.length(); i++ )	
		cout << ( sDig.at( i ) - 48 ) * iMul[i%2] << endl;
	
	return 0;
}
 
Zurück