0

我的字符串是嗯,350 个字符长。我需要将它放在控制台的中心,以便它的左右边距相同。

当我尝试对此进行 setw() 时,我得到这样的输出(只有开头有边距)。

          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我想要达到的目标:

             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

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

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

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

4

1 回答 1

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;
    }
}
于 2016-06-03T19:45:39.970 回答