【问题标题】:How to print buffer to stdout within c++?如何在 C++ 中将缓冲区打印到标准输出?
【发布时间】:2016-11-26 16:22:06
【问题描述】:

如何在标准输出中打印缓冲区以进行调试?我目前是在 XCode 中使用 OpenGL(用于 iOS 应用程序)的初学者,并且有以下代码行。

GLubyte *buffer = (GLubyte *)malloc(myDataLength);
glReadPixels(0, 0, 320, 480, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

我只是想将缓冲区打印到控制台,尽管在尝试时:fprintf(stderr, buffer); 我收到错误“没有匹配函数调用'fprintf'。

【问题讨论】:

  • 遍历GLubyte 中的各个内容,不管是什么,并分别打印每个值。
  • @BrandonIbbotson 谢谢,刚刚更新。
  • @SamVarshavchik 你介意分享一个例子吗?
  • 你写过#include <cstdio>吗?
  • @BrandonIbbotson 刚刚尝试过同样的错误。

标签: c++ ios opengl-es buffer stdout


【解决方案1】:

"fprintf" 至少需要 3 个参数(输出文件、字符串格式、参数),而您只提供 2 个。C++ 编译器告诉您找不到具有 2 个参数的 fprintf 的匹配签名。此外,还有一个问题需要解决。缓冲区可能包含不可打印的字符,因此正确调用 fprintf 可能不会给您预期的结果。我建议使用自定义缓冲区打印方法,可能类似于 Printing char buffer in hex array

【讨论】:

  • fprintf 只需要 2 个参数。
猜你喜欢
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
相关资源
最近更新 更多