gpt4 book ai didi

C++:setw 和 setfill 的行为不可预测

转载 作者:太空宇宙 更新时间:2023-11-04 16:01:16 25 4
gpt4 key购买 nike

根据我的理解,setw(n) 通过创建一个宽度为 n 个字符的行为。另一方面,setfill('x') 允许我们打印 n 个 x 个字符。

我想得到两排星星,像这样:

**************************************
Woohoo stars!
**************************************

此外,我想在字符串的两边创建两行等长的点,如下所示:

....................... TEAR HERE .......................

相反,我得到的是这样的:

Woohoo stars!
**************************************

.............. TEAR HERE .............................

为了实现这些目标,我将下面的代码与 #include<iomanip> 结合使用(注意:它被打印到外部 .txt 文件):

//goal 1
outfile << setw(40)<<setfill('*') << endl;
outfile<< "Woohoo stars!" << endl;
outfile << setw(40)<<setfill('*') << endl;

//goal 2
outfile <<setfill('.')<< setw(30) " TEAR HERE " << setfill('.')<< setw(30) <<endl;

我试过颠倒setw的顺序和 setfill故意的,但是编译后结果是一样的。此外,对于星形图案,顶行由于某种原因甚至不会输出。最后,我确保在新行上执行这些命令,因此不会有任何其他干扰它们所在的行。

最佳答案

不,setw(n) 不会“创建 n 个字符的宽度”,它会使用指定的填充字符将下一个打印项目填充到 n 个宽度。您仍然可以通过打印空字符串使其按预期工作:

outfile << setw(40)<<setfill('*') << "" << endl;

关于C++:setw 和 setfill 的行为不可预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490828/

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