2014-12-28 3 views
0

내 프로그램에서 작은 정렬 문제가 있습니다.C++ 테이블 정렬 - cout 및 iomanip

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    cout << setw(5) << "Sl. No:" << setw(15) << "Month" << setw(15) << "Name" << endl << endl; 
    cout << setw(5) << 1 << setw(15) << "January" << setw(15) << "Abhilash" << endl; 
    cout << setw(5) << 2 << setw(15) << "Februaury" << setw(15) << "Anandan" << endl; 
    cout << setw(5) << 3 << setw(15) << "March" << setw(15) << "Abhilash" << endl; 
    cout << setw(5) << 4 << setw(15) << "April" << setw(15) << "Anandan" << endl; 

    return 0; 
} 

출력 결과에서 월 이름이 오른쪽 정렬되지 않았습니다.

Sl. No:   Month   Name 

    1  January  Abhilash 
    2  Februaury  Anandan 
    3   March  Abhilash 
    4   April  Anandan 

무엇이 문제입니까?

답변

5

문자열 Sl. No:은 너비가 7이고 너비를 5 열로 맞추려고합니다. 첫 번째 행을 2 열만큼 밀어 넣습니다. 넓은 대신 첫 번째 열 일곱 폭보다는 5을보십시오 : 당신이 setw 사용할 때

cout << setw(7) << "Sl. No:" << setw(15) << "Month" << setw(15) << "Name" 
    << endl << endl; 
cout << setw(7) << 1 << setw(15) << "January" << setw(15) << "Abhilash" 
    << endl; 
//... 
+0

정말 고마워요. 어리석은 초보자 실수를 상기시켜 주셔서 감사합니다. 문제 해결됨. – Babbzzz

0

것은, 당신이

말 그래서 등 출력 문자열, INT의 끝에서 계산해야
cout << setw(15) << "January"; 

1 월부터 7 문자 사이에 8 공백의 서식을 지정합니다. 따라서 귀하의 예에서 당신은 갖고 싶어

cout << setw(23) << "January"; 

첫 번째 출력을 '1'로 유지하면 분명히 달라집니다.

0

오 당신이 "달"의 앞에 간격을 사용할 필요가

" month" 

하지

"month" 

결과가 당신이 조정해야 할 수도 있습니다

 Month 
    January 

모양을 사용하는 간격.