gpt4 book ai didi

C++可以setw和setfill填充字符串的末尾吗?

转载 作者:bug小助手 更新时间:2023-10-28 10:46:14 30 4
gpt4 key购买 nike

有没有办法让 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";
}

我想这可以完成这项工作,但感觉有点笨拙。

想法?

最佳答案

您可以使用操纵器 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++可以setw和setfill填充字符串的末尾吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062318/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com