C++ 中 setiosflags(ios::left) 和 setiosflags(ios::right) 简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:04:10
#include <iostream>
#include <iomanip>
using namespace std;

int main ()
{
int x,y;
for (x=1;x<=9;x++){
cout<<setiosflags(ios::right)<<setw(7*(x-1))<<"";

for (y=x;y<=9;y++){

cout<<x<<"*"<<y<<"=";
cout<<setiosflags(ios::left)<<setw(3)<<x*y;

}
cout<<endl;
}
system("pause");
return 0;
}

每个式子的结果为什么是右对齐??高手请指教

使用cout<<setiosflags(ios::right)以后,再调用 cout<<setiosflags(ios::left);无效的,你可以在调用之前加上一句 cout<<resetiosflags(ios::right);清除右对齐以后在调用 cout<<setiosflags(ios::left);就没问题了。或者更简洁些,你可以写成 cout<<left<<setw(3)<<x*y;这样也能达到你所希望的效果。
而且,你完全可以清除最上面的setiosflags(ios::right)语句,我不知道为什么要加上这句,因为输出的是空的,在这样设置是没有任何作用的,去掉这个这只右对齐以后其他的不用改也是正确的。还有也可以使用cout.flags(ios::left)设置左对齐。

我原来也遇到过。。。用了一个unsetf()试试。。。期待答复。。

8会,c里面加-就行拉,嘎嘎