C ++:打印出字符串后设置填充

时间:2015-10-15 01:39:52

标签: c++ string cout fill

我尝试cout字符串,以便输出的总长度为15。

例如,如果字符串是" Tom",那么我想在cout之后有12个空格。我知道如何使用setfillsetw来获得前导空格,但之后是否有内置填充空格的方法?或者唯一的方法是获取字符串长度并在字符串末尾附加一堆空格?

谢谢!

3 个答案:

答案 0 :(得分:3)

我认为您正在寻找std::left输出修饰符。

#include <iomanip>    // std::setw
#include <ios>        // std::left
#include <iostream>   // std::cout
#include <string>     // std::string

int
main()
{
  const std::string words[] = {
    "Tom",
    "Ferdinand",
    "And finally some longer string",
  };
  for (const auto& w : words)
    std::cout << std::setw(12) << std::left << w << "|\n";
}

输出:

Tom         |
Ferdinand   |
And finally some longer string|

答案 1 :(得分:1)

使用标头std::left中定义的IO操纵器ios

http://en.cppreference.com/w/cpp/io/manip/left

答案 2 :(得分:0)

  

我正在尝试输出一个字符串,以便输出的总长度是,   例如,如果字符串是“Tom”,那么我想要12个空格   在cout之后。

我使用了以下内容......

// ...
{
    std::stringstream ss1;
    ss1 << "Tom"; // insert 
    const int NameFieldSize = 15;
    while (ss1.str().size() < NameFieldSize) ss << " ";
    // ... insert the rest of the info to ss1
    // now write the full string to cout (or file)
    std::cout << ss1.str() << std::endl;
}
// ...

stringstream就像cout,所有格式化控件一样,但因为它基于ram,速度更快。

请注意,当ss1已经比NameFieldSize长时,代码并检测然后可能“修复”输出格式。