setw
流操纵符(space count)工作吗?例如,当有一个t
时,我想用四个空格打印a
,所以我使用t
,并将t
与setw
进行比较。
我写的代码:
# include <iostream>
# include <iomanip>
int main()
{
std::cout<<"t"<<"an";
std::cout<<std::setw(9)<<"an";
return 0;
}
:
a // This is 1 't'
a // This is setw()
所以我认为是:
setw(18)
=tt
代码工作了。但是当我删除n
时,它并没有变成一条直线。
# include <iostream>
# include <iomanip>
int main()
{
std::cout<<"tt"<<"an";
std::cout<<std::setw(18)<<"a";
return 0;
}
它给我这样的输出:
a
a
怎么了?
这是因为您需要在setw(18)
上添加n
。这适用于任何setw
。
示例代码:
# include <iostream>
# include <iomanip>
int main()
{
std::cout<<"tt"<<"an";
std::cout<<std::setw(18)<<"an"; // And you add the n here
return 0;
}
输出:
a
a
另一个解决方案是:
# include <iostream>
# include <iomanip>
int main()
{
std::cout<<"tt"<<"an";
std::cout<<std::setw(18)<<"a "; // And you add the a space here
return 0;
}
和相同。
我们放置n
或空格的原因是:
这是因为它证明了整个双字符字符串
"a"n
,而不仅仅是a
。如果单独打印换行符(…& lt; & lt;a & lt; & lt;'n'),那么您将得到相同的';错误';。你也可以通过使用任何空格字符来解决这个问题,比如……& lt; & lt;";您可能希望在同一个程序中同时打印带换行符和不带换行符的以查看差异。-某些程序员