【发布时间】:2022-01-05 22:31:25
【问题描述】:
我需要将右侧的整数和左侧的字符串写入一行并让它们正确排列(查看代码下方的输出)。
基本上我只需要一种仅使用 iostream 和 iomanip 来编写表格的方法,然后将 ints 的右对齐更改为字符串的左对齐。
其他提示也值得赞赏:)
#include <iostream>
#include <iomanip>
using namespace std;
class foo
{
public:
int i;
std::string s;
int j;
foo(int i1,std::string s1,int j1) : i(i1), s(s1),j(j1) {};
};
int main()
{
foo f1(1, "abc",50);
foo f2(100, "abcde",60);
cout << resetiosflags(ios::adjustfield);
cout << setiosflags(ios::right);
cout << setw(6) << "i" << setw(15) << "s" << setw(15) << "j"<<endl;
cout << setw(8) << f1.i << setw(15)
<< resetiosflags(ios::adjustfield) << setiosflags(ios::left) << f1.s <<setw(5)
<< resetiosflags(ios::adjustfield) << setiosflags(ios::right) << setw(15) << f1.j << endl;
cout << setw(8) << f2.i << setw(15)
<< resetiosflags(ios::adjustfield) << setiosflags(ios::left) << f2.s <<setw(5
<< resetiosflags(ios::adjustfield) << setiosflags(ios::right) << setw(15) << f2.j << endl;
/*i s j
1abc 50
100abcde 60*/
return 0;
}
这是输出:
i s j
1abc 50
100abcde 60
这就是我需要的:
i s j
1 abc 50
100 abcde 60
【问题讨论】:
标签: c++ io iostream cout iomanip