相当于 c++ 中的 fprint
g++ (GCC) 4.6.0 20110419 (Red Hat 4.6.0-5
)
在 C++ 中与此等效的是什么?我知道这会在 g++ 中编译。但我只是想看看 C++ 中是否还有其他东西可以像这样使用。
fprintf(stderr, "Server failed to receive message [ %s ]\n", stderror(errno));
非常感谢您的任何建议,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
怎么样:
What about:
查看 cerr 中的 iostream。它类似于 cout,但用于 stderr。
或者您可以使用 boost::formatt 来获取类型安全的 sprintf。
Check out cerr in iostream. Its like cout, but for stderr.
Or you can use boost::format to get a type safe sprintf.
您可以使用输出流 cerr。
cerr << “服务器接收消息失败[”<<标准错误(错误号)<< “]”<<结束;
You can use the output stream cerr.
cerr << "Server failed to receive message [ " << stderror(errno) << " ]" << endl;
更一般的答案:您可以将任何 istream 对象与流运算符一起使用。还有许多其他类型的对象继承自 istream。例如,fstream 对象是用于文件 I/O 的 istream 类型。还有 sstream(字符串流)对象,其使用方式与 sprintf 和 sscanf 类似。
话虽这么说,我会谨慎使用 C++ 流运算符而不是 C 等效项(C++ 也支持这些运算符)。如果您使用 C++ 流运算符,这将使国际化变得非常困难。
A more general answer: you can use any istream object with the stream operators. There are a lot of other types of objects that inherit from istream. For example, fstream objects are a type of istream used for file I/O. There's also sstream (string stream) objects which are used in a similar way to sprintf and sscanf.
That being said, I'd be wary of using the C++ stream operators instead of the C equivalents (which are also supported in C++.) If you use the C++ ones, it's going to make internationalization very difficult.