Dan*_*Dan 15 c++ formatting setw
有没有办法制作setw和setfill填充字符串的末尾而不是前面?
我有一种情况,我打印这样的东西.
CONSTANT TEXT variablesizeName1 .....:number1
CONSTANT TEXT varsizeName2 ..........:number2
Run Code Online (Sandbox Code Playgroud)
我想添加一个可变数量'.'的结尾
"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";
}
Run Code Online (Sandbox Code Playgroud)
我想这可以做到这一点,但感觉有点笨重.
想法?
jro*_*rok 28
您可以使用操纵器std::left,std::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);
}
Run Code Online (Sandbox Code Playgroud)
输出:
Constant text 1234567890: 42
Constant text 12345.....: 101
Run Code Online (Sandbox Code Playgroud)
编辑:如链接中所述,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;
Run Code Online (Sandbox Code Playgroud)
将输出
-0000000001
-0000000123
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31726 次 |
| 最近记录: |