2012-03-29 10 views
0

Mögliche Duplizieren:
C++ alignment when printing cout <<Constant Tabspace zwischen den Wörtern in C++

Ich bin eine Reihe von Wörtern in einer Ausgabedatei zu schreiben. Ich habe drei Tabspaces mit '\ t' Zeichen zwischen den Wörtern verlassen. Aber manchmal, wenn die Wörter zu klein oder zu groß sind, scheint es ein Problem mit der Ausrichtung zu geben. Wie man einen konstanten Abstand zwischen Wörtern gibt, die funktionieren würden, selbst wenn die Wörter klein sind?

Hier ist, worüber ich spreche.

Word:elpmas   Count:1 
    Word:This   Count:4 
    Word:pmasel   Count:1 
    Word:is   Count:1 
    Word:sample   Count:1 
    Word:sentence   Count:1 
    Word:si   Count:1 
    Word:a   Count:1 

Ich möchte einen konstanten Abstand zwischen den Wörtern und den Zählimpulsen haben. Ich verwende derzeit

cout<< "Word:"<< hash->key <<"\t\t\t" << "Count:" << hash->value <<endl; 

Hilf mir aus.

Antwort

5

Der Streammanipulator setw ist nützlich zum Ausrichten von Spalten in Tabellenausgaben. Zum Beispiel

Wird Ihre Ausgabe richtig ausrichten, vorausgesetzt, dass Ihre Schlüssel maximal 15 Zeichen sind.

1

Eine Registerkarte wird in bestimmte 'feste Spalten' verschoben. Ihre Registerkarten sehen aus wie 4 Zeichen Tabstopps

Je nachdem, wo Sie sich befinden, wenn Sie eine Registerkarte drucken, werden in der nächsten Registerspalte zwischen 1 und 4 Zeichen angezeigt.

Sie müssen also die aktuelle Position verfolgen (oder berechnen), bevor Sie die Registerkarte drucken. In Ihrem Fall sieht es so aus, als ob jede Zeile mit "Word:" beginnt, wobei drei Zeichen in der Tab-Spalte verbleiben. Wenn also ein Wort weniger als drei Zeichen hat, braucht es eine extra Registerkarte.

Auch wenn ein Wort länger als (3 + 4) 7 Zeichen ist, müssen Sie einen Tab weniger ausgeben.

Zusammenfassung, wenn Sie Layout mit Ihrem Code steuern möchten, indem Sie Registerkarten verwenden, müssen Sie eine variable Zahl abhängig von der Wortbreite verwenden.

Verwandte Themen