我尝试cout
字符串,以便输出的总长度为15。
例如,如果字符串是" Tom",那么我想在cout
之后有12个空格。我知道如何使用setfill
和setw
来获得前导空格,但之后是否有内置填充空格的方法?或者唯一的方法是获取字符串长度并在字符串末尾附加一堆空格?
谢谢!
答案 0 :(得分:3)
我认为您正在寻找std::left
输出修饰符。
#include <iomanip> // std::setw
#include <ios> // std::left
#include <iostream> // std::cout
#include <string> // std::string
int
main()
{
const std::string words[] = {
"Tom",
"Ferdinand",
"And finally some longer string",
};
for (const auto& w : words)
std::cout << std::setw(12) << std::left << w << "|\n";
}
输出:
Tom |
Ferdinand |
And finally some longer string|
答案 1 :(得分:1)
使用标头std::left
中定义的IO操纵器ios
。
答案 2 :(得分:0)
我正在尝试输出一个字符串,以便输出的总长度是, 例如,如果字符串是“Tom”,那么我想要12个空格 在cout之后。
我使用了以下内容......
// ...
{
std::stringstream ss1;
ss1 << "Tom"; // insert
const int NameFieldSize = 15;
while (ss1.str().size() < NameFieldSize) ss << " ";
// ... insert the rest of the info to ss1
// now write the full string to cout (or file)
std::cout << ss1.str() << std::endl;
}
// ...
stringstream就像cout,所有格式化控件一样,但因为它基于ram,速度更快。
请注意,当ss1已经比NameFieldSize长时,代码并检测然后可能“修复”输出格式。