2014-01-14 86 views
3

A有一個小問題。我如何添加空格和新的線條符號,使效果如此?在打印矢量內容時添加空格和新行

ACCT 
CCTG 
    CTGA 

vector<string>::reverse_iterator it; 
    for(it=vec.rbegin(); it!=vec.rend(); ++it) 
    { 

     cout<<*it; 
     cout<<endl; 
     cout<<" "; 

    } 

我試過這種方法,但只有第一個元素後移,這樣的:

ACCT 
CCTG 
CTGA 

非常感謝幫助!

+1

基於什麼輸入你究竟想要什麼?你想在CT上對齊,還是想在每行或其他位置添加額外的空間? – dornhege

回答

6

使用這一個:

std::string space = ""; 

for(auto it = vec.rbegin(); it != vec.rend(); ++it) { 
    std::cout << space << *it << std::endl; 
    space += " "; 
} 

這一個不輸出一個新行的最後空間。

+4

這比選擇的答案更正確。 – ysap

+0

是嗎?爲什麼要在'for'範圍之外聲明迭代器? – JorenHeit

+1

@JorenHeit你是對的,但它是關於打印命令。 –

5
vector<string>::reverse_iterator it; 
    string space=""; 
    for(it=vec.rbegin(); it!=vec.rend(); ++it) 
    { 

     cout<<*it; 
     cout<<endl; 
     space += " "; 
     cout<<space; 

    } 
3
size_t spaces = 0; 
for (auto it = vec.rbegin(); it != vec.rend(); ++it) 
    cout << string(spaces++, ' ') << *it << '\n';