C++中关于fprintf和ofstream的问题

8

我已经使用了一段时间的 fprintf,现在我想问一个问题。这个 fprintf 行的等效语句是什么:

fprintf(OutputFile, "%s", "SomeStringValue");

如何使用ofstream

我非常想知道如何在ofstream中使用"%s",如何获取下一个参数并将其打印为字符串?


类似于 os << "SomeStringValue";,其中 os 是已经正确打开的 std::ofstream - WhozCraig
这与string没有任何关系,请考虑删除该标签。 - UpAndAdam
1
当你真正需要依赖于非平凡的printf风格字符串时,你可以使用snprintf来构建字符串,然后将其输出到流中。 - paddy
1
实际上,当整个格式字符串为“%s”时,你应该使用fprintf(OutputFile,“SomeStringValue”);而不是你的方法,或者更好的是,使用fputs(“SomeStringValue”,OuputFile);,因为这样可以避免解析格式说明符的字符串。 - Dietmar Kühl
@DietmarKühl:混合使用C风格的FILE流和C++ I/O流是否保证提供一致的输出? - jxh
显示剩余2条评论
2个回答

3

您不需要使用它。

等效的方法基本上是:

std::ofstream x("your_file");
x << "SomeStringValue";
x.close();

请访问以下参考页面了解更多相关信息:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/


这些页面提供关于it技术的参考信息。请查看以上链接以获取更多信息。

3
你做不到。你只需将该字符串写入流中。
如果你想为该字符串提供一些附加格式(例如使用空格填充右对齐),则可以使用I/O操作符setfill(' ')(设置填充字符为空格)和setw(length)(设置输出宽度)。如果你想要类似于C风格格式字符串的语法,可以使用Boost.format
std::cout << boost::format("%s") % "SomeStringValue";

这实际上有点有趣,而且对我正在做的另一件事情也很奇妙地有用,谢谢jxh。 - UpAndAdam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接