首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该在我的C++代码中使用printf吗?

我应该在我的C++代码中使用printf吗?
EN

Stack Overflow用户
提问于 2010-01-07 08:55:36
回答 10查看 35K关注 0票数 74

我通常使用coutcerr向控制台写入文本。但是,有时我发现使用很好的老printf语句更容易。当我需要格式化输出时,我会使用它。

我使用它的一个例子是:

代码语言:javascript
复制
// Lets assume that I'm printing coordinates... 
printf("(%d,%d)\n", x, y);

// To do the same thing as above using cout....
cout << "(" << x << "," << y << ")" << endl;

我知道我可以使用cout格式化输出,但我已经知道如何使用printf。有什么理由我不应该使用printf语句吗?

EN

回答 10

Stack Overflow用户

发布于 2010-01-07 09:04:43

如果你曾经希望i18n你的程序,远离iostreams。问题是,如果句子由多个片段组成,就不可能像iostream那样正确地定位字符串。

除了消息片段的问题之外,您还有一个排序问题。考虑一份打印学生姓名和平均成绩的报告:

代码语言:javascript
复制
std::cout << name << " has a GPA of " << gpa << std::endl;

当你把它翻译成另一种语言时,另一种语言的语法可能需要你在名字之前显示GPA。AFAIK,iostream无法对插值的值进行重新排序。

如果您想两全其美(类型安全和能够i18n),请使用Boost.Format

票数 49
EN

Stack Overflow用户

发布于 2010-01-07 09:02:51

我使用printf是因为我讨厌丑陋的<<cout<<语法。

票数 21
EN

Stack Overflow用户

发布于 2010-01-07 09:17:07

使用boost::format。你得到了类型安全,std::string支持,像printf一样的接口,使用cout的能力,以及许多其他的好东西。你不会回去的。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2017489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档