2013-11-23 1 views
0

카드를 한 번에 하나씩 인쇄 할 카드 갑판이 있습니다. 그러나 단말기가 작동하는 방식 때문에 수직으로 인쇄됩니다. 그 (것)들을 나란하게 인쇄하는 어떤 방법 또는 기능 있는가? 다음은 내 코드 예제입니다.카드 갑판을 나란히 인쇄하십시오

cout << "---------" << endl; 
cout << "|"<<"6"<<setw(7)<<"|"<<endl; 
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl; 
cout << "|"<<setw(8)<<"|"<<endl; 
cout << "|"<<setw(8)<<"|"<<endl; 
cout << "|"<<setw(4)<< "S" << setw(6)<<"S" <<setw(2)<<"|"<<endl; 
cout << "|"<<setw(8)<<"|"<<endl; 
cout << "|"<<setw(8)<<"|"<<endl; 
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl; 
cout << "|"<<setw(7)<<"6"<<"|"<<endl; 
cout << "---------" << endl; 
+4

'endl'이 다음 줄로 이동한다는 것을 알지? – nhgrif

답변

0

endl은 개행 문자를 삽입하고 출력 스트림을 플러시합니다. 새 줄을 삽입하려면 '\ n'문자를 사용할 수 있습니다. 만약 당신이 그것을 플러시하고 싶다면 (당신이 원하는지는 모르겠다.) std :: flush를 사용할 수있다. 그리고이 두 가지를 원하지 않는다면 std :: endl, '\ n'또는 std :: flush가 필요 없다. 그들을 사용하지 마십시오.

What is the C++ iostream endl fiasco?

0

이 크기로 인쇄 일 측에 당신을 도울 수 스트림에 내장 아무것도하지만 당신은 은의 배열로 각 카드를 나타낼 수 std::strings를 포맷 한 후 인쇄 각 나란히하여 카드면을 인쇄 모든 카드의 행. 예를 들어 :

class card { 
public: 
    std::string get_row(int row) const { 
     switch (row) { 
      case 0: case 10: return "---------"; 
      case 1: return "|6  |"; 
      // ... 
     } 
    } 
    // ... 
}; 
std::vector<card> deck; 
// fill the deck 
for (int i(0); i != 11; ++i) { 
    for (auto const& card: deck) { 
     std::cout << card.get_row(i); 
    } 
    std::cout << '\n'; 
} 

은 물론, 당신은 일정에서 카드를 포맷하고 싶지 않아하지만 난 아이디어를 전달하기보다는 각 카드를 포맷의 세부 사항에서 길을 잃지 원했다. 물론, 당신 don't want to use std::endl하지만 그것은 사이드 쇼입니다.

+0

흠 .. 흥미 롭다. 나는 이것에 대해 더 조사해야 할 것이다. – user2105982