【发布时间】:2013-03-12 03:03:33
【问题描述】:
谁能告诉我std::cerr和perror的用法有什么区别
void perror ( const char * str );
我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。
【问题讨论】:
标签: c++
谁能告诉我std::cerr和perror的用法有什么区别
void perror ( const char * str );
我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。
【问题讨论】:
标签: c++
http://www.cplusplus.com/reference/cstdio/perror/
perror 和 cerr 是不同的东西。 cerr - 是与stderr 连接的std::ostream 类的对象。并且perror 打印errno 和stderr 中的字符串。
【讨论】:
您的问题基本上归结为 iostream 与 stdio。 here已经回答了类似的问题。
如果你在 C++ 中工作,除非你想做一些非常具体的事情,否则 cerr 绝对比 perror 更可取。唯一真正的区别是 cerr 几乎与
fprintf(stderr, const char*, arg1, ...);
虽然 perror 还会根据 errno 加载并显示相应的错误消息。你也不能用 perror 显示变量所以你不能这样做
perror("Something went wrong, i: %d", i);
除非你预处理你的错误信息。
【讨论】: