右对齐C++中的输出流

Mat*_*bar 14 c++

我在C++工作.我给了一个10位数的字符串(字符数组),其中可能有或没有3个破折号(最多13个字符).是否有内置的方式使用流向右对齐它?

我如何才能正确地打印到流中?是否有内置函数/方法来执行此操作,还是需要在字符数组的开头填充3个空格?

我正在处理ostream是具体的,不确定这是否重要.

flo*_*rin 31

你需要std::setw结合使用std::right.

#include <iostream>
#include <iomanip>

int main(void)
{
   std::cout << std::right << std::setw(13) << "foobar" << std::endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:在你要格式化的东西之前,你要执行`<< right << setw(13)`是很重要的*.即如果你正在做`cout <<"添加"<< 5 <<"文件"<< endl;`,你不能只做`cout << right << setw(13)<<"添加". ..`一开始.你*必须*在数字之前做,至少在MacOS X上. (3认同)

Nul*_*ion 7

是.您可以使用setw()设置宽度.默认对齐方式是右对齐的,默认填充是空格,因此这将在左侧添加空格.

stream << setw(13) << yourString
Run Code Online (Sandbox Code Playgroud)

见:setw().你需要包括<iomanip>.


Jol*_*hic 6

有关更多详细信息,请参阅您最喜欢的C++(iostream)参考中的"setw"和"right":

 cout << setw(13) << right << your_string;
Run Code Online (Sandbox Code Playgroud)