C ++可运输及工务局局长和setfill垫一个字符串的末尾?(C++ can setw and s

2019-06-27 06:06发布

有没有一种方法,使setwsetfill垫一个字符串,而不是前面的结束?

我在那里我打印像这样的情况。

 CONSTANT TEXT variablesizeName1 .....:number1 

 CONSTANT TEXT varsizeName2 ..........:number2

我想补充的一个变量量'.' 到年底

"CONSTANT TEXT variablesizeName#"这样我就可以做":number#"在屏幕上排队。

注:我有一个数组"variablesizeName#" ,所以我知道的最宽的情况下。

要么

我应该做手工设置setw这样

for( int x= 0; x < ARRAYSIZE; x++)
{
string temp = string("CONSTANT TEXT ")+variabletext[x];
cout <<  temp;
cout << setw(MAXWIDTH - temp.length) << setfill('.') <<":";
cout << Number<<"\n";
}

我想这将做的工作,但感觉那种笨重。

想法?

Answer 1:

您可以使用机械手std::leftstd::right ,并且std::internal选择,其中填充字符去。

针对您的特殊情况下,这样的事情可以做:

#include <iostream>
#include <iomanip>
#include <string>

const char* C_TEXT = "Constant text ";
const size_t MAXWIDTH = 10;

void print(const std::string& var_text, int num)
{
    std::cout << C_TEXT
              // align output to left, fill goes to right
              << std::left << std::setw(MAXWIDTH) << std::setfill('.')
              << var_text << ": " << num << '\n';
}

int main()
{
    print("1234567890", 42);
    print("12345", 101);
}

输出:

Constant text 1234567890: 42
Constant text 12345.....: 101

编辑 :由于在链接中提到, std::internal的作品只能用整数,浮点和货币输出。 例如与负整数,它会插入填充负号和最左边的数字字符之间。

这个:

int32_t i = -1;
std::cout << std::internal
          << std::setfill('0')
          << std::setw(11)  // max 10 digits + negative sign
          << i << '\n';
i = -123;
std::cout << std::internal
          << std::setfill('0')
          << std::setw(11)
          << i;

将输出

-0000000001
-0000000123


Answer 2:

就像是:

cout << left << setw(MAXWIDTH) << setfill('.') << temp << ':' << Number << endl;

产生这样的:

derp..........................:234
herpderpborp..................:12345678


Answer 3:

#include <iostream>
#include <iomanip>

int main()
{
   std::cout
      << std::setiosflags(std::ios::left) // left align this section
      << std::setw(30)                    // within a max of 30 characters
      << std::setfill('.')                // fill with .
      << "Hello World!"
      << "\n";
}

//Output:
Hello World!..................


文章来源: C++ can setw and setfill pad the end of a string?