2012-07-04 2 views
3

종종 화면 또는 파일에 2 차원 배열을 인쇄하려는 상황이 발생합니다. number의 요소가 길이가 다를 때cout : 반복 된 cout 문과의 일관된 간격

for(int q=0; q<x; q++) 
{ 
    cout << "\n"; 
    for(int w=0; w<y; w++) 
     cout << number[q][w] << "\t"; 
} 

그러나, 이것은 일반적으로 제대로 정렬되지 않는 열 리드 : 내 표준 접근 방식이있다. 각 숫자 다음에 (또는 앞에) 정확한 공백을 추가하여 어떻게 줄을 정렬 할 수 있습니까?

답변

8

std::setw(), std::left and std::right을 사용하십시오.

#include <iostream> 
#include <iomanip> 

void printNumber(int x) { 
    std::cout << "X:" << std::setw(6) << x << ":X\n"; 
} 

void printStuff() { 
    printNumber(528); 
    printNumber(3); 
    printNumber(73826); 
    printNumber(37); 
} 

int main() { 
    std::cout << "Left-aligned\n"; 
    std::cout << std::left; 
    printStuff(); 
    std::cout << "Right-aligned\n"; 
    std::cout << std::right; 
    printStuff(); 
} 

출력 :

Left-aligned 
X:528 :X 
X:3  :X 
X:73826 :X 
X:37 :X 
Right-aligned 
X: 528:X 
X:  3:X 
X: 73826:X 
X: 37:X 

(데모 :. http://ideone.com/6IdIc)이 예에서

는, I는 최대 예상 폭 6 사용한. 최대 값을 모르는 경우 데이터를 처음부터 살펴 보거나 사용중인 데이터 유형에 가능한 최대 값을 사용해야합니다 (이식성을 높이기 위해 std::numeric_limits<T>::max).

+0

위대한 답변 올리. 추가 세부 정보는 매우 유용합니다. –