2013-07-09 15 views
10

std :: cout sıfırlarla tamsayılar, ama cevap herkes verir pozitif sayılar için gayetDoğru yastığı negatif ben bu soru zaten sorulan bulundu

std::cout << std::setw(5) << std::setfill('0') << value << std::endl; 

olmakla -5 li o yazdırır:

000-5 

o -0005 yazdırmak ya da biz printf ile yapabileceğiniz her zaman olduğu gibi (-00005 sonuçlanacak olan) en az 5 haneli yazdırmak için cout zorlamak için yapmak için bir yolu var mı?

cevap

15
std::cout << std::setw(5) << std::setfill('0') << std::internal << -5 << '\n'; 
//              ^^^^^^^^ 

Çıktı:

-0005 

std::internal

Düzenleme: o tür şeyler önem verenlerle için

, N3337 (~c++11), 22.4.2.2.2:

The location of any padding is determined according to Table 91. 
        Table 91 - Fill padding 
State        Location 
adjustfield == ios_base::left  pad after 
adjustfield == ios_base::right  pad before 
adjustfield == internal and a 
sign occurs in the representation pad after the sign 
adjustfield == internal and 
representation after stage 1 began 
with 0x or 0X      pad after x or X 
otherwise       pad before 
+0

Çalışıyor, teşekkürler! – Philippe

+0

Çok hoş geldiniz! Bu soru güzel ve hızlı bir şekilde geçti. Umarım bu diğer insanlara da yardımcı olur. – BoBTFish