我正在进行格式化,但是我没有获得正确的格式。
这是我的代码,这是我得到的输出
cout << fixed << setprecision(2) << setw(3) << right << source << setw(20)
<<right <<vec[source].cityname
<< setw(15) << left<< sink << setw(15) << left <<vec[sink].cityname
<< setw(10) << left << vdist[ij] << "miles\n";
我得到了这个:
30 Novosibirsk_RU13 Tokyo_JP 10497.68 miles
我想得到这个:
30 Novosibirsk_RU 13 Tokyo_JP 10497.67 miles
如何在名称和号码之间获得该空格?
我已经在这方面工作了一段时间,但我无法获得正确的格式
答案 0 :(得分:1)
您在std::right
声明中错误地使用了cout
IO操纵器。要实现示例中显示的输出,您希望vec[source].cityname
和vec[sink].cityname
显然保持对齐:
cout << fixed << setprecision(2) << setw(3) << right << source <<
setw(20) << left <<vec[source].cityname <<
// ^^^^
setw(3) << left<< sink <<
// ^
setw(15) << left <<vec[sink].cityname <<
setw(10) << left << vdist[ij] << "miles\n";
另请注意,如果您使用setw(n)
并且n
小于下一个字段(string
)变量的长度,则不会被截止,但会转移整数输出到右边的附加字符数。