perror和std :: cerr使用

时间:2013-03-22 09:51:21

标签: c++

任何人都可以告诉我std::cerrperror

之间的用法差异
void perror ( const char * str );

我想知道在C ++应用程序中哪一个更受欢迎以及为什么它更受欢迎。

2 个答案:

答案 0 :(得分:3)

http://www.cplusplus.com/reference/cstdio/perror/

perrorcerr是不同的事情。 cerr - 是与std::ostream相关联的stderr类的对象。并perrorerrno打印stderr和您的字符串。

答案 1 :(得分:2)

你的问题基本归结为iostream vs stdio。类似的问题已经回答here

如果你在C ++工作,cerr绝对比perror更可取,除非你想做一些非常具体的事情。唯一真正的区别是cerr与

几乎相同
fprintf(stderr, const char*, arg1, ...);

而perror也会根据errno加载并显示相应的错误消息。此外,您无法使用perror显示变量,因此您无法执行

perror("Something went wrong, i: %d", i);

除非您预处理错误消息。