[C++] String Fehler?

08/21/2011 15:40 wutax#1
Hallo liebe Elitepvpers!

Heute habe ich wieder einmal ein bisschen mit Code::Blocks herumexperimentiert.
Nach einiger Zeit habe ich einen Fehler gefunden und komme nicht mehr weiter.

Code:
 
#include<iostream>
#include<string>
 
using namespace std;
 
int main()
{
 string zeichen = "Test!";
 string ausgabe;
 int zahl;
 
 for(zahl = 0; zahl == zeichen.length(); zahl++)
 {
     ausgabe = zeichen.substr(zahl,1);
     cout<<ausgabe<<"\n";
 }
 return 0;
}
Der Compiler gibt zwar keinen Fehler aus, und ich kann das Programm auch starten, doch die Konsole bleibt leer.
Es erscheint nur das übliche:

Code:
 
Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.
Habe ich da gerade ein Blackout oder kann man soetwas einfach nicht realisieren?

Bitte helft mir.
Danke!
08/21/2011 16:13 LwT^#2
Quote:
Originally Posted by wutax View Post
Hallo liebe Elitepvpers!

Heute habe ich wieder einmal ein bisschen mit Code::Blocks herumexperimentiert.
Nach einiger Zeit habe ich einen Fehler gefunden und komme nicht mehr weiter.

Code:
 
#include<iostream>
#include<string>
 
using namespace std;
 
int main()
{
 string zeichen = "Test!";
 string ausgabe;
 int zahl;
 
 for(zahl = 0; [B][COLOR="Red"]zahl == zeichen.length()[/COLOR][/B]; zahl++)
 {
     ausgabe = zeichen.substr(zahl,1);
     cout<<ausgabe<<"\n";
 }
 return 0;
}
;)
08/21/2011 16:25 MrSm!th#3
Was soll der Code bitte machen? o.ô
08/21/2011 16:31 wutax#4
@ LWT^: Das habe ich auch schon probiert, nur dann sehe ich nur noch die schwarze Konsole^^

@ MrSm!th: Der Code soll eigentlich nur auf diese Weise den String "Test!" untereinander ausgeben.
08/21/2011 16:34 _Merowinger_#5
Ließ dir nochmal die For-Schleifen Tuts durch.
<
08/21/2011 16:45 wutax#6
Vielen Dank!
Das habe ich ganz verwechselt...
Ich brauchte ja "!=" anstatt "==".
:)
08/21/2011 17:16 MrSm!th#7
Nein, das könnte nach hinten losgehen, nimm < anstatt !=

Und btw. ist der 2. Parameter von string::substr nicht die Endposition? Also, nicht die Länge? Dann müsste deine Schleife ja nur beim ersten Durchgang funktionieren; danach ist die Endposition des Substrings ja nicht mehr 1.
08/21/2011 18:54 Shadow992#8
Warum so umständlich?
Machs doch so:
PHP Code:
#include<iostream>
#include<string>
 
using namespace std;
 
int main()
{
 
string zeichen "Test!";
 
string ausgabe;
 
int zahl;
 
 for(
zahl 0zahl zeichen.length(); zahl++)
 {
     
ausgabe zeichen[zahl];
     
cout<<ausgabe<<"\n";
 }
 return 
0;

oder gleich so:

PHP Code:
#include<iostream>
#include<string>
 
using namespace std;
 
int main()
{
 
string zeichen "Test!";
 
int zahl;
 
 for(
zahl 0zahl zeichen.length(); zahl++)
 {
     
cout<<zeichen[zahl]<<"\n";
 }
 return 
0;

08/21/2011 22:12 wutax#9
@ MrSm!th: Danke, aber es passt jetzt so wie es ist.

@ Shadow992: Ja, dass wäre eine einfachere Methode, aber mir war es wichtig es so zu lösen, da es für einen Algorithmus gedacht ist. (Will nicht immer meinen ganzen Code hergeben ^^ ... Also habe ich ein Beispiel gemacht) :)

EDIT:
Yeah! Mein 50. Beitrag ^^ :)