我不喜欢在C ++库中使用<iostream>
。我更喜欢在<stdio.h>
中使用类似于“printf”和“scanf”的内容。
我可以使用Boost的格式库来替换所有C ++程序中的<iostream>
吗?
答案 0 :(得分:5)
Boost Format仅执行格式化位。你仍然需要iostream来实际在屏幕上显示一些内容。
当然,一起使用它们将与您正在寻找的printf
达到平等。并且这样做不会牺牲类型安全性(尽管现在这不是一个大问题,因为编译器通常会警告错误的printf参数)。
答案 1 :(得分:5)
Boost.Format适用于ostreams。您可以按如下方式使用它
cout << boost::format("%2% %1%") % 36 % 77;
或喜欢
string s2 = str( format("%2% %1%") % 36 % 77 );
并根据需要打印字符串。
Boost.Format不适用于istreams。
答案 2 :(得分:2)
你可以继续在C ++中使用printf
,没有错。只需#include <cstdio>
,你就可以了。当然,iostream
有几个好处(类型安全是最重要的) - 所以我仍然建议切换。
答案 3 :(得分:0)
printf和scanf受限于你不能使用自己的对象的方式。
如果你正在使用C ++,你需要了解一些关于流的知识,因为这是语言的标准。在C ++中,您可以为自己的对象创建流操作符,并使它们与流完美配合。
当然,你可以使用boost :: format,但它只适用于格式化输出。我喜欢boost :: format,当你使用本地化时(例如可翻译的字符串),它非常有用。
答案 4 :(得分:0)
其他人给出的简短回答是肯定的,但在Boost格式中没有scanf
的等价物。但是,另一种方法是使用Boost's Spirit库,它分别通过Karma和Qi组件具有输入和输出功能。不过,这对你正在做的事情来说可能太过分了,因为它是一个完整的解析器/生成器实现。