我最近看了很多别人写的代码,碰巧注意到每个人都经常使用"printf“风格的C函数,但在学校里学到的C++函数(尤其是cout)似乎并不那么受欢迎。
这是一个有效的观察结果,这是有原因的吗?约定?
谢谢,
R
发布于 2010-08-29 09:21:16
就我个人而言,我使用printf
而不是iostream
的东西(比如cout
),因为我认为它更清晰。
当你使用iostream
进行格式化时,你必须像setiosflags
和setf
这样的<<
各种奇怪的东西。我永远记不住所有这些东西所在的名称空间,更不用说它们都做了什么。即使我这样做了,我也会对代码的冗长和不直观感到失望。
printf
的格式化选项乍一看可能难以辨认,但它们非常简洁,在单个手册页中清楚地记录了内容,并且适用于多种语言。
另一个优点是printf
是无状态的:与cout
不同的是,我不需要记住在printf
上调用了哪些成员函数,或者哪个拜占庭式的标志组合已经<<
到其中了,这对可读性来说是一个很大的优势。
发布于 2010-08-29 09:22:05
我认为品味是一个可能的原因。我个人认为:
printf("%8d: %s\n", customer->id, customer->name);
比这个更具可读性:
std::cout << customer->id << ": " << customer->name << std::endl;
还有本地化的问题。printf
使更改格式以适应其他语言和UI区域性成为可能,除非您使用像Boost Format库这样的库,否则这将成为iostreams
的主要工作。
发布于 2010-08-29 09:16:48
有一些对标准流系统的批评--最值得注意的是,它的性能通常不如C的系统,而且它们不允许对要格式化的项进行重新排序,这会使本地化变得更加困难。
就我个人而言,我几乎所有事情都使用流,因为它们允许我将函数写入控制台、文件或字符串,而不必修改函数。
https://stackoverflow.com/questions/3593135
复制相似问题