繁体   English   中英

如何正确打印带有边距的长字符串(setw())?

[英]How to properly print long string with a margin (setw())?

我的字符串是嗯,长350个字符。 我需要将其在控制台中居中,以便它在左侧和右侧具有相同的边距。

当我尝试对此进行setw()时,我得到这样的输出(仅开始处有一个空白)。

          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我想要达到的目标:

             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我的代码看起来像这样(仅在左侧,我什至没有尝试第二个):

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

如果有人知道如何实现我的目标,我将不胜感激!

如果您知道线宽,则非常简单:

#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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM