C可以setw和setfill pad结束一个字符串?

前端之家收集整理的这篇文章主要介绍了C可以setw和setfill pad结束一个字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法使setw和setfill pad结束一个字符串而不是前面?

我有一种情况,我正在打印这样的东西.

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";
}

我想这会做这个工作,但感觉很笨重.

想法?

解决方法

您可以使用操纵器 std::left,std::right,and 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

猜你在找的C&C++相关文章