perror 和 std::cerr 使用

F. *_*mir 5 c++

谁能告诉我std::cerr和之间的用法区别是什么perror

void perror ( const char * str );
Run Code Online (Sandbox Code Playgroud)

我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。

rat*_*ath 3

您的问题基本上可以归结为 iostream 与 stdio。类似的问题已在这里得到解答。

如果您使用 C++ 工作,那么 cerr 绝对比 perror 更可取,除非您想做一些非常具体的事情。唯一真正的区别是 cerr 几乎与

fprintf(stderr, const char*, arg1, ...);
Run Code Online (Sandbox Code Playgroud)

而 perror 还会根据 errno 加载并显示相应的错误消息。另外,您无法显示带有 perror 的变量,因此您不能这样做

perror("Something went wrong, i: %d", i);
Run Code Online (Sandbox Code Playgroud)

除非你预处理你的错误消息。