如何在一个 setw 中包含两个 >> 调用?
How to include two calls of >> in one setw?
举一个最小的工作示例
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setw(10) << "aaaaaaa"
<< setw(10) << "bbbb"
<< setw(10) << "ccc"
<< setw(10) << "ddd"
<< setw(10) << endl;
for(int i(0); i < 5; ++i){
char ch = ' ';
if ( i == 0 )
ch = '%';
cout << setw(10) << i
<< setw(10) << i << ch
<< setw(10) << i
<< setw(10) << i
<< setw(10) << endl;
}
return 0;
}
输出为
aaaaaaa bbbb ccc ddd
0 0% 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
我想做的是将 << i << ch
包含在 setw(10)
的一个字段中,以便正确对齐列。
可能将 i
和 ch
组合在一个字符串中,setw
本身不会接受这种行为
试试这个片段
cout << setw(10) << i
<< setw(10) << std::to_string(i) + ch;
您需要将它们连接成一个字符串,如下所示:
#include <string>
cout << setw(10) << std::to_string(i) + ch;
一般。
但是如果您知道 i
是一个字符,您可以使用:
cout << setw(9) << i << ch;
这可能适合你,因为 i
似乎是 ' '
或 '%'
。
我不确定你的需求。
您可以使用一些 std::ostringstream,例如
std::ostringstream os;
os << i << ch << std::flush;
std::cout << setw(10) << os.str();
您可以构建一个字符串,例如
由于我们正在查看 ' '
或 '%'
,您可以简单地进行静态计算。
cout << setw(10) << i
<< setw( 9) << i << ch
<< setw(10) << i
<< setw(10) << i
<< setw(10) << endl;
举一个最小的工作示例
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setw(10) << "aaaaaaa"
<< setw(10) << "bbbb"
<< setw(10) << "ccc"
<< setw(10) << "ddd"
<< setw(10) << endl;
for(int i(0); i < 5; ++i){
char ch = ' ';
if ( i == 0 )
ch = '%';
cout << setw(10) << i
<< setw(10) << i << ch
<< setw(10) << i
<< setw(10) << i
<< setw(10) << endl;
}
return 0;
}
输出为
aaaaaaa bbbb ccc ddd
0 0% 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
我想做的是将 << i << ch
包含在 setw(10)
的一个字段中,以便正确对齐列。
可能将 i
和 ch
组合在一个字符串中,setw
本身不会接受这种行为
试试这个片段
cout << setw(10) << i
<< setw(10) << std::to_string(i) + ch;
您需要将它们连接成一个字符串,如下所示:
#include <string>
cout << setw(10) << std::to_string(i) + ch;
一般。
但是如果您知道 i
是一个字符,您可以使用:
cout << setw(9) << i << ch;
这可能适合你,因为 i
似乎是 ' '
或 '%'
。
我不确定你的需求。
您可以使用一些 std::ostringstream,例如
std::ostringstream os;
os << i << ch << std::flush;
std::cout << setw(10) << os.str();
您可以构建一个字符串,例如
由于我们正在查看 ' '
或 '%'
,您可以简单地进行静态计算。
cout << setw(10) << i
<< setw( 9) << i << ch
<< setw(10) << i
<< setw(10) << i
<< setw(10) << endl;