Joe*_*oel 5 c++ std stringstream opencl
据我了解, astd::stringstream在内部表示不是作为一个std::string而是作为一组std::string实例。(如果我错了,请纠正我)。
我有表示为 an 的数据std::stringstream,我想将它传递给一个 C 函数(clCreateProgramWithSource来自 OpenCL),该函数期望数据作为字符数组的数组。( const char**).
是否有某种方法可以在不首先创建一个包含 stringstream 的全部内容的字符串的情况下执行此操作,例如通过以下方式:
std::string tmp1 = my_stringstream.str();
const char* tmp2 = tmp1.c_str();
const char** tmp3 = &tmp2;
Run Code Online (Sandbox Code Playgroud)
编辑
后续问题:
如果这是没有可能的,是有一些替代方案std::stringstream,继承std::ostream,允许这种低级别的访问权限?
通过获取字符串流的streambuf,我们可以显式设置它应该使用的缓冲区:
#include <sstream>
constexpr size_t buffer_size = 512;
void dummy_clCreateProgramWithSource(const char **strings) {}
int main () {
char * ss_buffer = new char[buffer_size];
std::stringstream filestr; // TODO initialize from file
filestr.rdbuf()->pubsetbuf(ss_buffer,buffer_size);
const char** extra_indirection = const_cast<const char **>(&ss_buffer);
dummy_clCreateProgramWithSource(extra_indirection);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意 const_cast 告诉我们什么可能是谎言;我们向 OpenCL 承诺,在调用 clCreateProgramWithSource 后,我们不会写入字符串流。
| 归档时间: |
|
| 查看次数: |
6126 次 |
| 最近记录: |