格式化输出流,ios :: left和ios :: right [英] Formatting the output stream, ios::left and ios::right

查看:145
本文介绍了格式化输出流,ios :: left和ios :: right的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个代码:

  cout< std :: setiosflags(std :: ios :: right); 
cout<< setw(3)<< 1<< setw(3)<< 2<< '\\\
'; //输出两个值

cout<< std :: setiosflags(std :: ios :: left);
cout<< setw(3)<< 1<< setw(3)<< 2<< '\\\
'; //输出两个值

但输出不像我预期的。而不是:

  1 2 
1 2

这会出来:

  1 2 
1 2

问题是什么?我设置'std :: ios :: left'但是没有区别?

解决方案

  #include< iostream> 
#include< iomanip>
int main(){
std :: cout<< std :: resetiosflags(std :: ios :: adjustfield);
std :: cout<< std :: setiosflags(std :: ios :: right);
std :: cout<< std :: setw(3)<< 1<< std :: setw(3)<< 2<< '\\\
';

std :: cout<< std :: resetiosflags(std :: ios :: adjustfield);
std :: cout<< std :: setiosflags(std :: ios :: left);
std :: cout<< std :: setw(3)<< 1<< std :: setw(3)<< 2<< '\\\
';
}


I have this code:

cout << std::setiosflags(std::ios::right);
cout << setw(3) << 1 << setw(3) << 2 << '\n'; // Output two values

cout << std::setiosflags(std::ios::left);
cout << setw(3) << 1 << setw(3) << 2 << '\n'; // Output two values

but the output doesnt come like i expected. instead of:

  1  2
1  2  

this comes out:

  1  2
  1  2

What is the problem? I set 'std::ios::left' but it makes no difference?

解决方案

You have to clear the previous value in adjustfield before you can set a new one.

Try this:

#include <iostream>
#include <iomanip>
int main () {
  std::cout << std::resetiosflags(std::ios::adjustfield);
  std::cout << std::setiosflags(std::ios::right);
  std::cout << std::setw(3) << 1 << std::setw(3) << 2 << '\n';

  std::cout << std::resetiosflags(std::ios::adjustfield);
  std::cout << std::setiosflags(std::ios::left);
  std::cout << std::setw(3) << 1 << std::setw(3) << 2 << '\n';
}

这篇关于格式化输出流,ios :: left和ios :: right的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆