Zeichen auf Konsole formatieren
-
Hallo ich versuch gerade das alle Zeichen aus dem string s in einer Reihe untereinader stehen aber irgendwie will mir das nicht gelingen.
Die Zeichen aus s stehen halt immer irgendwo auf der Konsole.
string s = "ABC"; cout<<"1234567890" <<setw(20)<< s <<endl; cout<<"a" <<setw(20)<< s <<endl; cout<<"abcdef" <<setw(20)<< s <<endl;
Hier soll immer ABC untereinander stehen aber auch hier steht ABC nie untereinander.
cout<<"left"; cout.width(20); cout<<right<<"ABC"<<endl; cout<<"leeeeeeefff2"; cout.width(20); cout<<right<<"ABC"<<endl;
Irgendwie verstehe ich diese Manipulatoren hier nicht:
-
Es ist doch prinzipiell einfach. Du musst wissen, wieviele Zeichen bereits ausgegeben wurden, dann kannst du diese von einer festgelegten Zeichenanzahl abziehen und diese übriggebliebene Anzahl als Leerzeichen ausgeben, und danach die jeweiligen Buchstaben.
-
#include <iostream> #include <iomanip> #include <string> using namespace std; int main() { string s = "ABC"; cout<<setw(10)<<"1234567890" <<setw(20)<< s <<endl; cout<<setw(10)<<"a" <<setw(20)<< s <<endl; cout<<setw(10)<<"abcdef" <<setw(20)<< s <<endl; for(;;); return 0; }
Muss immer links davon stehen und gibt an, wieviele Zeichen die Ausgabe einnehmen soll - in dem Fall der linke String immer 10 vom Zeilenanfang und der String 's' 20 vom Ende des linken.
-
Dafür gibt es sehr viele Möglichkeiten, ich vermute mal, du meinst am ehesten dies:
cout << left; cout << setw(20) << "1234567890" << s << '\n'; cout << setw(20) << "a" << s << '\n'; cout << setw(20) << "abcdef" << s << '\n';
edit: Zu spät. Aber dafür siehst du, wie man es linksbündig macht.
@Hacker: Sei dir doch bitte sicher, dass deine Antworten richtig und passend sind, bevor du antwortest. Insbesondere, wenn du Hackereien vorschlägst.
-
Hacker schrieb:
Es ist doch prinzipiell einfach. Du musst wissen, wieviele Zeichen bereits ausgegeben wurden, dann kannst du ...
Ja Hacker, dann sag' uns doch mal, wie viele Zeichen nach
std::cout << std::sqrt(12.)
ausgegeben wurden.
Gruß
Werner
-
Werner Salomon schrieb:
Hacker schrieb:
Es ist doch prinzipiell einfach. Du musst wissen, wieviele Zeichen bereits ausgegeben wurden, dann kannst du ...
Ja Hacker, dann sag' uns doch mal, wie viele Zeichen nach
std::cout << std::sqrt(12.)
ausgegeben wurden.
Gruß
WernerJa, in diesem Fall wäre es wohl (blöderweise) nötig, das ganze in einen Stringstream zu schreiben und dann abhängig von dessen Länge zu machen... tja.
SeppJ's Idee kannte ich noch nicht.. bin aber halt schon lange von der Konsole weg, da vergisst man die "Handgriffe" leicht wieder
-
Ich sehe da nichts konsolenspezifisches. Streams brauchst du dauernd in C++, zum Beispiel bei den von dir vorgeschlagenen Stringstreams.
-
SeppJ schrieb:
Ich sehe da nichts konsolenspezifisches. Streams brauchst du dauernd in C++, zum Beispiel bei den von dir vorgeschlagenen Stringstreams.
Nein. Was ich meine, sind solche Tricks, um Buchstaben unabhängig von anderem schön zu Formattieren.
Edit: Was ich sagen willl: sowas brauch ich nie.
-
Kann man sicher auch bei Fenstertiteln unter Windoof einsetzen.
-
aja?
PS: Du hast Dich scheinbar verschrieben; es heißt "Windows".
-
Ich denke, das doof war schon Absicht. Zurecht.