C Strings

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
213
Hallo alle zusammen,
ich hab da eine frage. Um bei chars die aus kleinbuchstaben, Großbuchstaben und umgekehrt zu machen, könnte man ja folgendermaßen machen:


Code:
char convert(char arg) {
  if ((arg >= 65) && (arg <= 90)) {
    return arg + 32;
  };
  if ((arg >= 97) && (arg <= 122)) {
    return arg - 32;
  };
 
 
  return arg;
}


Bsp.:
Code:
String args ="AsdgeZerT";
String args ="aSDGEzERt";


Meine frage ist, wie mache ich das aus einem String (z.B. String args)?

Würde mich um eur hilfe freuen.

Lg
Padawan
 
Entschuldigung, könntest du deine Frage präzisieren? Ich glaube ich könnte dir helfen - wenn ich weiß was du tun möchtest ;)

mfg
 
void Convert( std::string& rString )
{
for ( std::string::iterator i = rString.begin(); i != rString.end(); i++ )
{
*i = convert( *i );
}
}
 
Statt einem char bekommst du als Argument einen char*. Also einen pointer auf die erste Speicherstelle eines Chararrays (ich gehe davon aus, dass du mit der Funktionsweise von Arrays in C vertraut bist). Dieses läufst du mittels einer Schleife durch und machst selbiges was du oben mit einem char machst, für jeden char in dem Array ;)

Und ich denke du hast das Thema verfehlt weil keine Rede von C++ und der STL Klasse string war.
 
Zuletzt bearbeitet: (Rechtschreibfehler^^)
Paxi schrieb:
Statt einem char bekommst du als Argument einen char*. Also einen pointer auf den Beginn eines Chararrays. Dieses läufst du mittels einer Schleife durch und machst selbiges was du oben mit einem char machst, für jeden char in dem Array ;)

Und ich denke du hast das Thema vefehlt weil keine Rede von C++ und der STL Klasse string war.

string args ="aSDGEzERt";

sah für mich nach stl aus... ansonsten:

void Convert( char* pszString )
{
do {
*pszString = convert( *pszString );
} while ( *pszString++);
}
 
Ich hätte es whs in etwa so gelöst:

PHP:
char* convert(char* args, size_t size) {
	for(int i=0;i<size;++i) {
		 if ((*args[i] >= 65) && (*args[i] <= 90)) {
				*args[i]+=32;
		}
		else if ((*args[i] >= 97) && (*args[i] <= 122)) {
			*args[i]-=32;
		}
	}
	return args;
}
 
Hi,

mit einem char ist es ja einfach. es eteht ja auch als code dar in meinem beitrag. Wie mache ich aus der zeichenkette eines Strings, aus den Kleinbuchstaben Großbuchstaben und aus den Großebuchstaben Klein buchstaben?

Also:
String string ="AbDeRtzUn"; //ist gegeben. Ausgabe nach bearbeitung: aBdErTZuN
 
Tron36 schrieb:
Hallo alle zusammen,
ich hab da eine frage[...]

Sei dir bitte klar darüber, daß C nicht das gleiche ist wie C++. Wenn du in deinem Threadtitel von C sprichst, dann aber in deinem Beitrag ein der C++-Klasse std::string ähnelndes Konstrukt verwendest, kann es dir passieren, daß du von einigen Leuten schief angeguckt wirst (von mir zum Beispiel).
 
Ein bisschen mitdenken musst du schon selbst. Wie antred sagt, es gibt in C keinen "String". Ein String is ein Array aus einzelnen chars, logischerweise. Daher übergibst du ein array aus chars (char*), steht doch schon alles oben, wo ist das Problem? Und ja wenn du C++ verwendest, schreib es dazu und verwende std::string.
 
Zurück
Oben