2017-03-26 17 views
1

나는 아래에 주어진 문자열의가 있습니다. 그래서 다음과 같은 결과를 보여주고 싶습니다 :cout을 사용하여 텍스트를 오른쪽 정렬하는 방법은 무엇입니까?</p> <pre><code>string s="i amngoingntoncuet"; </code></pre> <p>내가 콘솔에 표시하는 동안 오른쪽으로 문자열을 정렬 할 : 가정하자

EDIT : 가장 오른쪽 문자가 정렬되어야합니다. I 출력을 얻기 위해이 코드를 시도 그리고

              i am 
going 
to 
cuet 

:

         i am 
            going 
             to 
             cuet 

나는 출력을 표시하려면이 코드를 시도 :

cout.width(75); 
cout<<s; 

을하지만 그것은 단지 바로이 같은 첫 번째 줄을 정렬 :

for(int i=0 ; i<s.size(); i++) 
    { 
     cout.width(75); 
     cout<<s[i]; 
    } 

하지만 이 코드를 사용하여 특별한 출력을 얻으십시오.

                i 

                 a 
                m 

                    g 
                  o 
                 i 
                n 
               g 

                    t 
                  o 

                    c 
                  u 
                 e 
                t 

원하는 출력을 얻으려면 어떻게해야합니까?

+0

오른쪽에 정렬 된 텍스트가 아니며 오른쪽에 정렬 된 텍스트를 설명하지 않습니다. 오른쪽에 정렬 된 텍스트에는 ** 오른쪽 ** 문자 ** 정렬 **이 있습니다. –

+0

** line **를 처리해야하므로 코드가 여러 줄을 포함하는 문자열을 인식하고 각 줄을 별도로 처리해야합니다. 그것은 아니며 그렇지 않습니다. –

+0

@ n.m. 어떻게하면 각 행을 명시 적으로 처리 할 수 ​​있습니까? 예를 들어 줄 수 있습니까? – akid

답변

2

s을 한 줄씩 읽은 다음 각 줄을 오른쪽 정렬하여 출력해야합니다.

#include <iostream> 
#include <iomanip> 
#include <sstream> 

void printRightAlignedLines(const std::string& s, int width) 
{ 
    std::istringstream iss(s); //Create an input string stream from s 
    for (std::string line; std::getline(iss, line);) //then use it like cin 
     std::cout << std::setw(width) << line << '\n'; 
} 

int main() 
{ 
    std::string s = "i am\ngoing\nto\ncuet"; 
    printRightAlignedLines(s, 75); 
} 
-1
#include <iostream> 
#include <string> 
int main(){ 
    std::string s="i am\ngoing\nto\ncuet"; 

    std::cout.width(75); 
    for(int i=0 ; s[i]!='\0'; i++) 
    { 
      if(s[i]=='\n'){ 
        std::cout<<s[i]; 
        std::cout.width(75); 
      }else{ 
        std::cout<<s[i]; 
      } 
    } 
    std::cout <<std::endl;; 
} 

여기가 제대로 작동합니다. : D

+0

이 코드에서 오른쪽 끝의 문자는 정렬되지 않습니다. – akid

+0

@akid 여기 같은 결과가 있었습니까? http://cpp.sh/3vhxm –

+0

그는 맞습니다. 이것이하는 일은 거대한 들여 쓰기와 왼쪽 정렬입니다. – user4581301