2017-03-26 2 views
1

Angenommen, ich habe einen String s, die unten angegeben:Wie richtet man Text mit Cout nach rechts aus?

string s="i am\ngoing\nto\ncuet"; 

Ich möchte die Zeichenfolge auf der rechten Seite während der Anzeige in der Konsole auszurichten. Also ich möchte Ausgabe wie folgt zeigen:

EDIT: rechten Zeichen sollten ausgerichtet werden.

         i am 
            going 
             to 
             cuet 

habe ich versucht, diesen Code die Ausgabe zu zeigen:

cout.width(75); 
cout<<s; 

Aber es nur richtig, die erste Zeile wie folgt ausgerichtet:

              i am 
going 
to 
cuet 

Dann habe ich versucht, diesen Code die Ausgabe zu erhalten :

for(int i=0 ; i<s.size(); i++) 
    { 
     cout.width(75); 
     cout<<s[i]; 
    } 

Aber ich Sonderausgabe mit diesem Code erhalten:

                i 

                 a 
                m 

                    g 
                  o 
                 i 
                n 
               g 

                    t 
                  o 

                    c 
                  u 
                 e 
                t 

Wie kann ich die gewünschte Ausgabe erhalten?

+0

Dies ist nicht Text rechts ausgerichtet, und Sie beschreiben nicht Text rechts ausgerichtet. Text, der nach rechts ausgerichtet ist, hat ** ** ** die ** ** ** - ** ** - Zeichen ** ausgerichtet. –

+0

Sie müssen ** Zeilen ** verarbeiten, daher muss Ihr Code auf Zeichenfolgen achten, die mehrere Zeilen enthalten, und jede Zeile einzeln verarbeiten. Es ist nicht und tut es nicht. –

+0

@ n.m. Wie kann ich jede Zeile explizit bearbeiten? Kannst du ein Beispiel geben? – akid

Antwort

2

Sie müssen zeilenweise Zeile s lesen und dann jede Zeile rechtsbündig ausgeben.

#include <iostream> 
#include <iomanip> 
#include <sstream> 

void printRightAlignedLines(const std::string& s, int width) 
{ 
    std::istringstream iss(s); //Create an input string stream from s 
    for (std::string line; std::getline(iss, line);) //then use it like cin 
     std::cout << std::setw(width) << line << '\n'; 
} 

int main() 
{ 
    std::string s = "i am\ngoing\nto\ncuet"; 
    printRightAlignedLines(s, 75); 
} 
-1
#include <iostream> 
#include <string> 
int main(){ 
    std::string s="i am\ngoing\nto\ncuet"; 

    std::cout.width(75); 
    for(int i=0 ; s[i]!='\0'; i++) 
    { 
      if(s[i]=='\n'){ 
        std::cout<<s[i]; 
        std::cout.width(75); 
      }else{ 
        std::cout<<s[i]; 
      } 
    } 
    std::cout <<std::endl;; 
} 

Hier sollte dies funktionieren. : D

+0

In diesem Code sind Zeichen ganz rechts nicht ausgerichtet. – akid

+0

@akid Hast du das gleiche Ergebnis wie hier bekommen? http://cpp.sh/3vhxm –

+0

Er hat Recht. Was dies tut ist linksbündig mit einem großen Einzug. – user4581301

Verwandte Themen