string mit zahlen führt zu fehlern
-
hallo!
wenn ich einen string habe gefüllt mit chars da funktioniert rotate() aus algorithm problemlos...
habe ich ihn allerdings mit zahlen gefüllt auf diese art hier:
string abc; abc[0] = '2'; abc[1] = '1'; //...dann 1. funktioniert rotate() nicht
2. ist die ausgabe mit einfachcout<<abc;nicht möglich. sondern man muss sowas in der art machen:
cout<<abc[0]; //... // natürlich later dann automatischkann das wer erklären????
-
std::string abc( "321" );Oder:
std::string abc( 3, '0' ); abc[ 0 ] = '3'; abc[ 1 ] = '2'; abc[ 2 ] = '1';Oder:
std::string abc; abc.resize( 3 ); abc[ 0 ] = '3'; abc[ 1 ] = '2'; abc[ 2 ] = '1';
-
Der String abc ist leer (da default-konstruiert), hat also die Länge 0. Und mit den anschließenden Zuweisungen
abc[0]='2';etc schreibst du auf nicht-exisitierende String-Elemente - was dabei herauskommt, ist undefiniert (aber in jedem Fall nicht das, was du erwartest). Also entweder du füllst den String per push_back() mit den benötigten Ziffern (dann wächst er auch korrekt mit) oder du sagst ihm gleich, wie groß er werden soll.
-
ahso

ive got it.. stimmt, string is ja wie ein char-array fast, wenn ich mich nicht ganz täusche...
kann ich vllt noch ne erklärung zu push_back() ( params, etc) haben?

danke scho ma
-
push_back hängt einen einzelnen Charakter an den String an und achtet dabei aber auch das genug Speicher reserviert ist.
-
hokage schrieb:
ive got it.. stimmt, string is ja wie ein char-array fast, wenn ich mich nicht ganz täusche...
Naja, nicht wirklich - oder hast du schonmal ein char-Array gesehen, das seine Größe zur Laufzeit ändern kann

kann ich vllt noch ne erklärung zu push_back() ( params, etc) haben?

Kurzfassung: push_back() erwartet nur einen char als Parameter und hängt diesen an das Ende des Strings an. Die Langfassung findest du in jedem brauchbaren C++ Lehrbuch (oder z.B. in meinem Magazinartikel "Stringverarbeitung in C++").
-
string is ja wie ein char-array fast,
betonung lag auf FAST

so also:
abc = push_back('1');denn hätt ichs verstanden

-
Eher so:
abc.push_back( '1' );
-
ok alles klah xD
denn hab ichs.
vielen dank nochma
