繁体   English   中英

格式化C ++ setw

[英]Formatting C++ setw

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

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

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

如何获得姓名和电话号码之间的空格?

我已经为此工作了一段时间,但我无法获得正确的格式

您在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] << "miles\n";

还要注意,如果使用setw(n)n小于下一个字段( string )变量的长度,则不会将其截断,而是将整个输出向右移动其他字符数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM