【发布时间】:2017-01-08 15:19:33
【问题描述】:
我想以 pdb 格式打印我的数据,这是一种存储原子坐标的特定格式,以便某些标准分子可视化软件可以读取它们。
目前我正在使用围绕常规 C++ 的工作并将我的 std::cout 与 printf 结合起来以获得所需的格式化输出,
std::cout << std::setw(6) << "ATOM" << std::setw(5) << "0" << " "
<< std::setw(4) << "C" << std::setw(12) << global_id
<< " ";
printf("%8.3f %8.3f %8.3f %6.2f %6.2f \n", pos[0], pos[1], pos[2], tt, ss );
其中 global_id 是一个整数。
那么我怎样才能消除这个 printf 并只使用 std::cout 在小数点前后指定精度来编写整个语句。
任何帮助将不胜感激。
【问题讨论】:
-
我在您使用的格式化字符串中没有看到任何特殊内容,因此您可以使用
fixed、setprecision和setw完成所有操作。默认情况下,cout与stdout同步,所以它应该可以工作,但是同步会引入不必要的低效率。也不能一概而论。我只需将printf替换为Boost 输出格式,或将sprintf替换为合适的缓冲区。你可以封装这个。这不是你要问的(答案很简单),但这是我要做的。
标签: c++