c++ - 使数据进入 ostream 以进入字节数组的最有效方法是什么?

标签 c++ stringstream ostream

我有一个需要调用的函数,它接受一个 ostream。

我要的是一个char数组中的数据,一个char*。

所以我要做的是将 ostream 数据复制到 imageBytes 中。问题是,这对我来说似乎效率低下,我只想将数据放入 char[ONE_MEGABYTES]。将它输出到 stringstream 似乎是一种非常间接的方式。我怎样才能更有效地做到这一点?

    #define ONE_MEGABYTE 1048576

    volatile char* imageBytes = new char[ONE_MEGABYTE];

    stringstream pngImageStringStream(ios_base::in | ios_base::out | ios_base::binary);
    image.write_stream(pngImageStringStream);
    imageLength = pngImageStringStream.tellp();
    memcpy( (void*)imageBytes, (void*)pngImageStringStream.str().c_str(), imageLength);

最佳答案

最有效的方法是使用read:

pngImageStringStream.read(imageBytes, imageLength);

关于c++ - 使数据进入 ostream 以进入字节数组的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011241/

相关文章:

c++ - 我应该什么时候返回 std::ostream?

c++ - Qt——QWidget到底是什么

c++ - 为什么我必须在这里清除 std::stringstream?

c++ - 对提供核心转储的 ostringstream 对象执行 .str().c_str() 操作

operator-overloading - E0369 连接字符串引用时

使用 std::ostream 和 std::cout 进行 C++ 日志记录

c++ - 与 asio::async_read 一起使用的正确模式是什么?

c++ - “myV”没有命名类型

c++ - 在另一个头文件 C++ 中创建一个类的实例

c++ - 为什么将 std::endl 与 ostringstream 一起使用会影响输出速度?