[英]How to properly print long string with a margin (setw())?
My string is hmm, 350 chars long. 我的字符串是嗯,长350个字符。 I need to center it in the console so it has same margins from the left and right side. 我需要将其在控制台中居中,以便它在左侧和右侧具有相同的边距。
When I try to setw() on this, I get an output like this (only the beginning is with a margin). 当我尝试对此进行setw()时,我得到这样的输出(仅开始处有一个空白)。
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
What I'm trying to achieve: 我想要达到的目标:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
My code looks like this (only for the left side, I didn't even try for the second one yet): 我的代码看起来像这样(仅在左侧,我什至没有尝试第二个):
out << left << setw(20) << " " << longString << endl;
If someone knows how to achieve my goal, I'll be grateful! 如果有人知道如何实现我的目标,我将不胜感激!
If you know the linewidth it is rather simple: 如果您知道线宽,则非常简单:
#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.