我可以使用Boost';要替换iostream的格式库? 我不喜欢在C++库中使用 。我更喜欢使用类似于中的“printf”和“scanf”的东西 我可以使用Boost格式库来代替我的C++程序中的代码>代码>

我可以使用Boost';要替换iostream的格式库? 我不喜欢在C++库中使用 。我更喜欢使用类似于中的“printf”和“scanf”的东西 我可以使用Boost格式库来代替我的C++程序中的代码>代码> ,c++,boost,iostream,stdio,C++,Boost,Iostream,Stdio,C++,可以继续使用 Primtf,没有错。只要加入#就可以了。当然,iostream有几个好处(类型安全是最大的好处)——所以我还是建议切换 Boost Format只执行格式化位。您仍然需要iostream在屏幕上显示一些内容 当然,将它们结合使用将实现与您正在寻找的printf的对等。它在不牺牲类型安全的情况下实现了这一点(尽管现在这不是一个大问题,因为编译器通常会警告错误的printf参数)。Boost.Format与ostream一起工作。你使用它如下 cout << bo

C++,可以继续使用<代码> Primtf<代码>,没有错。只要加入#就可以了。当然,
iostream
有几个好处(类型安全是最大的好处)——所以我还是建议切换

Boost Format只执行格式化位。您仍然需要iostream在屏幕上显示一些内容


当然,将它们结合使用将实现与您正在寻找的
printf
的对等。它在不牺牲类型安全的情况下实现了这一点(尽管现在这不是一个大问题,因为编译器通常会警告错误的printf参数)。

Boost.Format与ostream一起工作。你使用它如下

cout << boost::format("%2% %1%") % 36 % 77; 
然后根据需要打印字符串


Boost.Format不适用于istreams。

printf和scanf受到限制,您无法将自己的对象用于它们

如果你使用C++,你需要了解一些关于流的知识,因为这是语言的标准。在C++中,可以为自己的对象创建流运算符,并使它们与流完美地工作。< /P>


当然,您可以使用boost::format,但它仅用于格式化输出。我喜欢boost::format,当您使用本地化(例如可翻译字符串)时,它非常有用。

其他人给出的简短回答是肯定的,但boost格式中的
scanf
没有等价物。然而,另一种选择是使用库,该库分别通过业力和气分量具有输入和输出能力。不过,对于您正在做的事情来说,这可能有点过头了,因为这是一个完整的解析器/生成器实现。

据我所知,这与类型安全是一样的。我想要的东西是一样好,这是类型安全的,但提供类似于“printf”和“scanf”的东西。谢谢。
这没什么问题。
:printf没有什么问题吗PI不认为类型安全是一个小交易。只要printf
printf
的第一个参数是文本,大多数编译器都会警告潜在的类型冲突。@Marcelo:谢谢。我可以说我可以继续使用/在我的C++程序中使用吗?”马塞洛Ctotos:除非你使用<代码> SycCyWiStdio。抱歉,但我不知道这个。我可以说,如果我使用+Boost格式库,那么我可以获得我想要的功能(类似于但类型安全)?谢谢。@CMW是的,这正是Boost.Format的目标。@Vicente:谢谢。但不幸的是,Boost.Format与istream不兼容。请尝试
string s2 = str( format("%2% %1%") % 36 % 77 );