提问人:Ivan 提问时间:11/2/2022 最后编辑:ChrisIvan 更新时间:11/2/2022 访问量:60
如何保证 std::cout 始终使用 n 宽度
How to guarantee that std::cout always uses n width
问:
我的输出如下所示:
BTC-USDT [FTX] 20460.91 20470.09
BTC-USDT [BINANCE_US] 20457.34 20467.28
BTC-USDT [BINANCE_US] 20457.50 20467.28
我希望它看起来像这样:
BTC-USDT [ FTX] 20460.91 20470.09
BTC-USDT [BINANCE_US] 20457.34 20467.28
BTC-USDT [BINANCE_US] 20457.50 20467.28
我想我对这段代码很接近,但我对setw()
std::cout << pair << std::setfill(' ') << std::setw(15) << " [" << exch << "] " << fixed << setprecision(2) << bid << " " << ask << std::endl;
答:
3赞
Chris
11/2/2022
#1
如注释中所述,iomanip 设置需要在它们要应用的项目之前应用。
填写示例中缺失变量的值:
#include <iomanip>
#include <iostream>
int main() {
std::cout << "Foo " << "["
<< std::setfill(' ') << std::setw(15)
<< "Bar" << "] "
<< std::fixed << std::setprecision(2) << 20.897
<< " " << 1.4566 << std::endl;
return 0;
}
输出:
Foo [ Bar] 20.90 1.46
2赞
Remy Lebeau
11/2/2022
#2
如果希望给定值具有某些输出特性,如宽度、对齐方式等,则需要在输出值之前应用相应的 I/O 操纵器,而不是在输出值之后。
在您的示例中,您希望以 9 的宽度左对齐,并以 10 的宽度右对齐,因此请相应地应用和/,例如:pair
exch
std::setw
std::left
std::right
std::cout << std::setfill(' ')
<< std::setw(9) << std::left << pair
<< " [" << std::setw(10) << std::right << exch << "] "
<< std::fixed << std::setprecision(2) << bid << ' ' << ask
<< std::endl;
输出:
BTC-USDT [ FTX] 20460.91 20470.09
BTC-USDT [BINANCE_US] 20457.34 20467.28
BTC-USDT [BINANCE_US] 20457.50 20467.28
评论
" ["
exch