Rus*_*sel 16 c++ io outputstream
我最近一直在查看其他人编写的很多代码,并且碰巧注意到每个人都使用"printf"风格的C函数,但在学校学到的C++函数(特别是cout)似乎并不那么受欢迎.
这是一个有效的观察,是否有理由这样做?惯例?
谢谢,
[R
And*_*one 24
就个人而言,我使用printf
的iostream
东西(比如cout
)因为我觉得它更清楚.
当你进行格式化时iostream
,你必须有<<
各种各样的古怪,比如setiosflags
和setf
.我永远无法记住所有这些东西都存在于哪个命名空间中,更不用说它的全部功能了.即使我这样做,我也对代码的冗长和不直观感到失望.
格式化选项printf
最初可能看起来难以辨认,但它们简洁明了,在单个手册页中有明确记录,并且适用于多种语言.
另一个优点是printf
无状态:与cout
我不同,我不需要记住已经调用了哪些成员函数printf
,或者哪些拜占庭式的标志混合已被<<
编入其中.这对可读性来说是一个很大的好处.
我认为味道是一个可能的原因.我个人觉得这个:
printf("%8d: %s\n", customer->id, customer->name);
Run Code Online (Sandbox Code Playgroud)
比这更具可读性:
std::cout << customer->id << ": " << customer->name << std::endl;
Run Code Online (Sandbox Code Playgroud)
本地化也存在问题.printf
使得可以更改格式以适应其他语言和UI文化,这将成为一项主要的苦差事iostreams
,除非您使用类似Boost格式库的东西.