2016-06-03 5 views
0

내 문자열은 흠, 350 자입니다. 왼쪽과 오른쪽에서 동일한 여백을 갖도록 콘솔에 센터를 배치해야합니다.긴 문자열을 여백 (setw())으로 올바르게 인쇄하는 방법은 무엇입니까?

내가 이것에 setw()하려고하면, 나는이 같은 출력을 얻는다. (시작 부분에만 여백이있다.) 내가 달성하기 위해 노력하고있어

  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 

:

   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
내 코드는이 (좌측 만, 나는 심지어 두 번째 아직 시도하지 않았다)처럼 보이는

:

out << left << setw(20) << " " << longString << endl; 

누군가 내 목표를 달성하는 방법을 알고 있다면, 나는 감사 할 것입니다!

+0

당신의 선 폭이 변경할 수 있습니까? – user463035818

+0

아니요, 일정합니다. –

답변

0

당신은 오히려 간단하다 선폭을 알고있는 경우 :

#include <iostream> 
#include <string> 
#include <iomanip> 

int main(){ 
    std::string longstring = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 
    int margin = 5; 
    int linewidth = 10; 
    int pos = 0; 
    while (pos < longstring.size()){ 
     std::cout << std::setw(linewidth) 
        << longstring.substr(pos,linewidth-margin) << std::endl; 
     pos+= linewidth-margin; 
    } 
}