gpt4 book ai didi

c++ - 格式化C++输出问题

转载 作者:行者123 更新时间:2023-11-27 23:28:44 26 4
gpt4 key购买 nike

让我举例说明我的问题,我有一个像这样的函数:

void printer(int width, int hight){
for(int i=0;i<width;++i) std::cout<<" & ";
for(int i=0;i<hight;++i) std::cout<<" ^ ";
std::cout<<std::endl;
}

我的问题是功能打印机应该始终以相同的宽度输出两个 for 循环

例如:输出可能看起来(宽度 5):

   &^
&&&^

或者无论如何我打印任何(从上面的代码)for 循环的输出以恒定宽度独立于 for 循环执行的次数

最佳答案

问题不明确。您是否正在寻找类似以下的内容?

void printer(int amps, int carets, int overallWidth){
for (int i = amps + carets; i < overallWidth; i++) std::cout<<" "; // leading padding
for (int i=0;i<amps;++i) std::cout<<"&";
for (int i=0;i<carets;++i) std::cout<<"^";
std::cout<<std::endl;
}

所做的更改只是添加了一个用于输出填充的循环。 (为了清楚起见,还更改了参数名称)

printer(1,1,5);
printer(3,1,5);

然后会产生示例中所示的输出

   &^
&&&^

当然,可以对 overallWidth 变量进行硬编码,而不是将其作为参数传递; printer() 函数的隐式常量。

编辑:
上面的片段与问题的片段非常接近。然而,还有更多惯用方法,例如下面的“one liner”,它使用字符串构造函数重载之一来生成重复字符的字符串,并使用 iomanip 的 setw() 来生成填充。

void printer(int amps, int carets, int overallWidth){
std::cout << setiosflags(ios::right) << setw(overalWidth)
<< string(amps, '&') + string (carets, '^')
<< std::endl;
}

关于c++ - 格式化C++输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474810/

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