2017-04-18 2 views
-4
 cout << "---------------------------------------------------\n"; 
     cout << "# Level:" << getLevel() << "           #\n"; 
     cout << "# Max Hp:" << getMaxHp() << "         #\n"; 
     cout << "# Hp:" << getHp() << "           #\n"; 
     cout << "# Attack Point:" << getAtkPoint() << "        #\n"; 
     cout << "# Defense:" << getDefense() << "          #\n"; 
     cout << "---------------------------------------------------\n"; 

ich so etwas wie diese, aber wenn die Anzahl der Ziffer des Rückgabewertes ist mehr als 1 wird es ein unerwünschter Raum, wie ich Räume in c lösche ++

int sBasamak(int b) 
{ 
int a=0; 
while(b > 0) 
{ 
    a++; 
    b /= 10;  
} 
return a; 
} 

Dies ist, was ich tat, tun wollte um die Anzahl der Ziffern zu behalten, aber der andere Teil der Lösung ist jenseits meiner Weisheit, hoffe du verstehst, was ich versuchen will.

EDIT: (Wenn jemand WONDER HIER WIE ICH ES FEST)

void space(int b,char gelen[]) 
{ 
int a=0; 

while(b >0) { 
    a++; 
    b /= 10; 

} 

int c=0; 

for(int i=0 ; gelen[i] ; i++) 
{ 
    c++; 
} 

cout << setw(51-c-a) << "#\n"; 

} 

und

 int a=getLevel(); 
     int b=getMaxHp(); 
     int c=getHp(); 
     int d=getAtkPoint(); 
     int e=getDefense(); 
     cout << "---------------------------------------------------\n"; 
     cout << "# Level:" << a ; space(a," Level:"); 
     cout << "# Max Hp:" << b; space(b," Max Hp:"); 
     cout << "# Hp:" << c; space(c," Hp:"); 
     cout << "# Attack Point:" << d; space(d," Attack Point:"); 
     cout << "# Defense:" << e; space(e," Defense:"); 
     cout << "---------------------------------------------------\n"; 
+0

was "unerwünschter Raum" meinst du? Ich vermute, das ist nur ein Formatierungsproblem. Können Sie die Ausgabe so anzeigen, wie sie ist und wie Sie sie haben wollen? – user463035818

+3

[Legen Sie die Feldbreite fest] (http://en.cppreference.com/w/cpp/io/manip/setw) und [Ausrichtung] (http://en.cppreference.com/w/cpp/io/manip /links). –

+0

Bitte geben Sie eine [MVCE] (https://stackoverflow.com/help/mcve) an. – tambre

Antwort

-1

Wenn Ihr Problem ist, dass Sie Ihre '#' wollen - ausgerichtet ES, dann würde ich empfehlen eines von zwei Dingen:

  1. Verwendung Laschen (\t) anstelle von Leerzeichen (allignes selbst automatisch) oder
  2. ein einfaches Bit-Logik (wie if(n>=10)cout<</*x spaces*/, sonst cout < x-1 Räume /;) verwenden

Hoffnung, das hilft.

EDIT: Alternativ könnten Sie eine ASCII-Rücktaste ausgeben. Nicht sicher, wie gut das funktioniert.

+0

[setw] (http://en.cppreference.com/w/cpp/io/manip/setw) ist, was ich wollte, danke Sie –