格式化c++语言

Formatting C++ setw

本文关键字:语言 c++ 格式化      更新时间:2023-10-16

我正在格式化,我没有得到正确的格式。

这是我的代码,这是我得到的输出

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] << "milesn";

我得到这个:

30      Novosibirsk_RU13             Tokyo_JP       10497.68  miles

我想要得到这个:

30 Novosibirsk_RU       13  Tokyo_JP             10497.67 miles

我怎样才能得到名字和号码之间的空格?

我已经做了一段时间了,但我就是不能得到正确的格式

您在cout声明中错误地使用了std::right IO操纵器。要实现示例中所示的输出,您需要vec[source].citynamevec[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] << "milesn";

还请注意,如果您使用setw(n)n小于下一个字段(string)变量的长度,则不会被截断,但会将整个输出向右移动以获得额外字符的数量。