2010-07-06 11 views
9

In C++ wird die setw-Funktion verwendet, um die Anzahl der Zeichen festzulegen, die als Feldbreite für die nächste Einfügeoperation verwendet werden sollen. Gibt es irgendeine Funktion in C, ich meine, in der Standard-c-Bibliothek, die dasselbe tut?C-Äquivalent der 'setw'-Funktion

+0

Dies ist das erste Mal sein, kann ich jemanden gesehen haben, der versteht, wie Iostream Formatierer zu verwenden, und nicht, wie das Äquivalent, was mit 'printf zu tun '... es ist fast immer umgekehrt. :) –

+1

Ja, ich laufe immer in die gleichen Sachen. Ich habe die C++ Style Iostream Formatierer in der Schule gelernt, aber wir verwenden C-Stil bei der Arbeit. –

Antwort

18

printf ("%5d", 42);

Wird 42 mit 5 Räumen drucken. Lesen Sie die man-Seiten von printf, um zu verstehen, wie Padding, Überlauf und andere Nuancen funktionieren.

EDIT: Einige Beispiele -

int x = 4000; 
printf ("1234567890\n"); 
printf ("%05d\n", x); 
printf ("%d\n", x); 
printf ("%5d\n", x); 
printf ("%2d\n", x); 

Gibt den Ausgang

1234567890 
04000 
4000 
4000 
4000 

Beachten Sie, dass die %2d zu klein war die Zahl übergeben, um es zu handhaben, aber dennoch den gesamten Wert gedruckt.

+1

Beachten Sie, dass das Platzieren eines '-' vor der Padding-Nummer bewirkt, dass der Ausgang nach links ausgerichtet wird. Beispiel: 'printf ("% - 7s, "12345"); 'wird' 12345__' drucken, wobei '_' ein Leerzeichen ist. Dies steht im Gegensatz zu' printf ("% 7s," 12345 "); gib dir '__12345'. [Related Answer] (http://stackoverflow.com/a/276869/1214700) – mb595x

4

Nein, da der in C verwendete Stream den Zustand des Stream-Objekts nicht verwaltet.

Sie müssen angeben mit z. printf() mit einem geeigneten Formatierungscode.

+0

könnten Sie angeben, wie könnte ich das tun? Ich benötige die äquivalente Formatierung von 'setw (2)' ...... –

2

Eine weitere Option ist die Formatzeichenfolge als eine Variable zu definieren:

char print_format[] = "%5d"; printf(print_format, 42); 

Die oben ähnlich ist C++ setw, dass Sie den Inhalt der Variablen vor dem Drucken festlegen. Viele Gelegenheiten erfordern eine dynamische Formatierung der Ausgabe. Dies ist eine Methode, um dies zu erreichen.

-1

setw Manipulator: Dieser Manipulator legt die minimale Feldbreite am Ausgang fest. Die Syntax lautet: setw (x) Hier bewirkt setw, dass die Zahl oder die Zeichenfolge, die darauf folgt, in einem Feld mit x Zeichen Breite gedruckt wird, und x ist das Argument, das in setw manipulator gesetzt wird. Die Header-Datei, die aufgenommen werden müssen, während setw Manipulator ist Beispielcode

#include <iostream> 
using namespace std; 
#include <iomanip> 
  
void main() 
{ 
int x1=12345,x2= 23456, x3=7892; 
cout << setw(8) << "Exforsys" << setw(20) << "Values" << endl 
        << setw(8) << "E1234567" << setw(20)<< x1 << endl 
        << setw(8) << "S1234567" << setw(20)<< x2 << endl 
        << setw(8) << "A1234567" << setw(20)<< x3 << endl; 
} 
+1

Dies ist nicht die C-Äquivalenz –

+0

Dies ist keine gültige Antwort. Nicht gleichwertig. – NicoBerrogorry