setw
とsetfill
を文字列の前ではなく最後に埋め込む方法はありますか?
私はこのようなものを印刷している状況があります。
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
、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
[〜#〜] edit [〜#〜]:リンクで述べたように、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
何かのようなもの:
cout << left << setw(MAXWIDTH) << setfill('.') << temp << ':' << Number << endl;
次のようなものを生成します:
derp..........................:234
herpderpborp..................:12345678
#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!..................