C++ 如何在C++;类似于C

C++ 如何在C++;类似于C,c++,C++,我想用pdb格式打印我的数据,这是一种存储原子坐标的特殊格式,这样一些标准的分子可视化软件就可以读取它们 目前我正在使用一个围绕普通C++的工作,并将我的STD::CUT和PrtTF结合起来,得到一个期望的格式化输出,如: std::cout << std::setw(6) << "ATOM" << std::setw(5) << "0" << " " << std::setw(4) <<

我想用pdb格式打印我的数据,这是一种存储原子坐标的特殊格式,这样一些标准的分子可视化软件就可以读取它们

目前我正在使用一个围绕普通C++的工作,并将我的STD::CUT和PrtTF结合起来,得到一个期望的格式化输出,如:

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 );

std::cout您正在寻找的机制是
setprecision()
,如下所述:

setw()
结合使用:


您要寻找的机制是
setprecision()
,如下所述:

setw()
结合使用:


我在您使用的格式化字符串中看不到任何特殊的内容,因此您可以使用
fixed
setprecision
setw
来完成这一切。默认情况下,
cout
stdout
同步,因此它应该可以工作,但同步会带来不必要的低效。它也不能概括。我只想用Boost输出格式或
sprintf
替换
printf
,使之成为合适的缓冲区。你可以封装这个。这不是你要问的(答案很简单),但我会这么做。看一看,我在你使用的格式字符串中看不到任何安全的东西,所以你可以用
fixed
setprecision
setw
来完成这一切。默认情况下,
cout
stdout
同步,因此它应该可以工作,但同步会带来不必要的低效。它也不能概括。我只想用Boost输出格式或
sprintf
替换
printf
,使之成为合适的缓冲区。你可以封装这个。这不是你要问的(答案很简单),但这是我要做的